hancock_cms_feedback 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +60 -0
- data/Rakefile +1 -0
- data/app/assets/javascripts/hancock/feedback.coffee +8 -0
- data/app/assets/javascripts/hancock/feedback/form.coffee +77 -0
- data/app/assets/javascripts/hancock/feedback/init.coffee +2 -0
- data/app/assets/stylesheets/hancock/feedback.sass +0 -0
- data/app/controllers/concerns/hancock/feedback/decorators/contacts.rb +84 -0
- data/app/controllers/hancock/feedback/contacts_controller.rb +7 -0
- data/app/mailers/hancock/feedback/contact_mailer.rb +17 -0
- data/app/models/concerns/hancock/feedback/decorators/contact_message.rb +44 -0
- data/app/models/hancock/feedback/contact_message.rb +17 -0
- data/app/views/hancock/feedback/contact_mailer/new_message_email.html.slim +15 -0
- data/app/views/hancock/feedback/contacts/_fields.html.slim +18 -0
- data/app/views/hancock/feedback/contacts/_fields_with_settings.html.slim +24 -0
- data/app/views/hancock/feedback/contacts/_form.html.slim +37 -0
- data/app/views/hancock/feedback/contacts/_form_with_wrapper.html.slim +2 -0
- data/app/views/hancock/feedback/contacts/_simple_captcha.html.slim +17 -0
- data/app/views/hancock/feedback/contacts/_success.html.slim +4 -0
- data/app/views/hancock/feedback/contacts/index.html.slim +8 -0
- data/app/views/hancock/feedback/contacts/new.html.slim +8 -0
- data/app/views/hancock/feedback/contacts/sent.html.slim +3 -0
- data/app/views/hancock/feedback/contacts/update_captcha.html.slim +21 -0
- data/bin/console +15 -0
- data/bin/setup +7 -0
- data/config/locales/hancock.feedback.ru.yml +56 -0
- data/config/locales/ru.simple_captcha.yml +3 -0
- data/config/locales/ru.simple_form.yml +9 -0
- data/hancock_cms_feedback.gemspec +39 -0
- data/lib/generators/hancock/feedback/config/config_generator.rb +13 -0
- data/lib/generators/hancock/feedback/config/templates/hancock_feedback.erb +19 -0
- data/lib/generators/hancock/feedback/controllers/decorators_generator.rb +24 -0
- data/lib/generators/hancock/feedback/controllers/templates/contacts.erb +145 -0
- data/lib/generators/hancock/feedback/controllers/transfers_generator.rb +39 -0
- data/lib/generators/hancock/feedback/migrations/migrations_generator.rb +18 -0
- data/lib/generators/hancock/feedback/migrations/templates/migration_contact_messages.erb +17 -0
- data/lib/hancock/feedback/admin.rb +6 -0
- data/lib/hancock/feedback/admin/contact_message.rb +40 -0
- data/lib/hancock/feedback/configuration.rb +51 -0
- data/lib/hancock/feedback/controllers/contacts.rb +154 -0
- data/lib/hancock/feedback/engine.rb +36 -0
- data/lib/hancock/feedback/models/active_record/contact_message.rb +13 -0
- data/lib/hancock/feedback/models/contact_message.rb +92 -0
- data/lib/hancock/feedback/models/mongoid/contact_message.rb +35 -0
- data/lib/hancock/feedback/routes.rb +42 -0
- data/lib/hancock/feedback/version.rb +5 -0
- data/lib/hancock_cms_feedback.rb +34 -0
- data/release.sh +6 -0
- metadata +187 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f8635187bd7c69d51f2f3305d273bf3ca8354928
|
4
|
+
data.tar.gz: 40fba26ea9789aab51e457074edb5b370a22e3e0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8b202af443da4c572ccb53daa0358680a9d6ea2fab244e2cf7052e769a944120bfc2fce94f06e510424241e06babe818a094ef94e0a18baa4df5f295eee12351
|
7
|
+
data.tar.gz: 4ccdfb30f6c59b0ca679bfaebf38ddf400d0f91f0212114ebaeba36709979d547ff13fd59469fccbecf88d3a4db643a33edafa0b9800aafbc555b30c20a53f37
|
data/.gitignore
ADDED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
hancock_cms_feedback
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.3.1
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 Alexander Kiseliev
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
# HancockCmsFeedback
|
2
|
+
|
3
|
+
### Remaded from [EnjoyCMSFeedback](https://github.com/enjoycreative/enjoy_cms_feedback)
|
4
|
+
|
5
|
+
Feedback system for [HancockCMS](https://github.com/red-rocks/hancock_cms).
|
6
|
+
Feedback form, AJAX, Mailer, custom fields, captcha support
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
|
10
|
+
Add this line to your application's Gemfile:
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
gem 'hancock_cms_feedback'
|
14
|
+
```
|
15
|
+
|
16
|
+
Then add this
|
17
|
+
```ruby
|
18
|
+
gem "recaptcha", require: "recaptcha/rails" # Recaptcha
|
19
|
+
```
|
20
|
+
or this
|
21
|
+
```ruby
|
22
|
+
gem "glebtv-simple_captcha" # simple_captcha
|
23
|
+
```
|
24
|
+
before it for captcha you need. And configure it.
|
25
|
+
|
26
|
+
And then execute:
|
27
|
+
|
28
|
+
$ bundle
|
29
|
+
|
30
|
+
Or install it yourself as:
|
31
|
+
|
32
|
+
$ gem install hancock_cms_feedback
|
33
|
+
|
34
|
+
## Usage
|
35
|
+
|
36
|
+
Add in config/routes.rb
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
hancock_cms_feedback_routes
|
40
|
+
```
|
41
|
+
Then execute
|
42
|
+
|
43
|
+
$ rails g hancock:feedback:config
|
44
|
+
|
45
|
+
and now you can edit config/initializers/hancock_feedback.rb
|
46
|
+
|
47
|
+
## Development
|
48
|
+
|
49
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake false` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
50
|
+
|
51
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
52
|
+
|
53
|
+
## Contributing
|
54
|
+
|
55
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/red-rocks/hancock_cms_feedback.
|
56
|
+
|
57
|
+
|
58
|
+
## License
|
59
|
+
|
60
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,77 @@
|
|
1
|
+
window.hancock_cms.feedback.create_ajax_form = (form_selector = "#new_hancock_feedback_contact_message",
|
2
|
+
wrapper_selector = "#hancock_feedback_contact_form",
|
3
|
+
animate = true)->
|
4
|
+
|
5
|
+
if animate
|
6
|
+
$(document).delegate form_selector, "ajax:send", ()->
|
7
|
+
$(form_selector).closest(wrapper_selector).animate(opacity: 0.01, 100)
|
8
|
+
|
9
|
+
$(document).delegate form_selector, "ajax:complete", (event, xhr, status)->
|
10
|
+
data = xhr.responseText
|
11
|
+
if $(data).find('img').length > 0
|
12
|
+
$(data).find('img').load ->
|
13
|
+
$(form_selector).closest(wrapper_selector).stop().css(opacity: 0.01).html(data).css(opacity: "")
|
14
|
+
else
|
15
|
+
$(form_selector).closest(wrapper_selector).stop().css(opacity: 0.01).html(data).css(opacity: "")
|
16
|
+
|
17
|
+
else
|
18
|
+
$(document).delegate form_selector, "ajax:complete", (event, xhr, status)->
|
19
|
+
$(form_selector).closest(wrapper_selector).html(xhr.responseText)
|
20
|
+
|
21
|
+
|
22
|
+
$(document).delegate form_selector + " .input", 'click', (e) ->
|
23
|
+
e.preventDefault()
|
24
|
+
$(e.currentTarget).removeClass("field_with_errors").find('span.error').hide()
|
25
|
+
return false
|
26
|
+
|
27
|
+
|
28
|
+
window.hancock_cms.feedback.set_update_captcha = (link_selector = "#new_hancock_feedback_contact_message .update_captcha_link",
|
29
|
+
captcha_selector = "#new_hancock_feedback_contact_message .simple_captcha",
|
30
|
+
animate = true) ->
|
31
|
+
if animate
|
32
|
+
$(document).delegate link_selector, 'click', (e) ->
|
33
|
+
e.preventDefault()
|
34
|
+
$(captcha_selector).animate(opacity: 0.01, 100)
|
35
|
+
$.get e.currentTarget.href, (data)->
|
36
|
+
$(data).find('img').load ->
|
37
|
+
$(captcha_selector).stop().css(opacity: 0.01).replaceWith(data).find('input[type=text]').focus()
|
38
|
+
|
39
|
+
else
|
40
|
+
$(document).delegate link_selector, 'click', (e) ->
|
41
|
+
e.preventDefault()
|
42
|
+
$.get e.currentTarget.href, (data)->
|
43
|
+
$(captcha_selector).replaceWith(data).find('input[type=text]').focus()
|
44
|
+
|
45
|
+
$(document).delegate captcha_selector + " img", 'dblclick', (e)->
|
46
|
+
e.preventDefault()
|
47
|
+
$(link_selector).trigger 'click'
|
48
|
+
return false
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
window.hancock_cms.feedback.set_feedback_form_reloader = (link_selector = "#hancock_cms_feedback_success .reload_feedback_form_link",
|
53
|
+
wrapper_selector = '#hancock_cms_feedback_success',
|
54
|
+
wrapper_form = $("<div id='hancock_cms_feedback_success'></div>"),
|
55
|
+
animate = true) ->
|
56
|
+
|
57
|
+
if animate
|
58
|
+
$(document).delegate link_selector, 'click', (e) ->
|
59
|
+
e.preventDefault()
|
60
|
+
$(wrapper_selector).animate(opacity: 0.01, 100)
|
61
|
+
$.get e.currentTarget.href, (data)->
|
62
|
+
data = wrapper_form.html(data)[0].outerHTML if wrapper_form.length > 0
|
63
|
+
if $(data).find('img').length > 0
|
64
|
+
$(data).find('img').load ->
|
65
|
+
$(wrapper_selector).stop().css(opacity: 0.01).replaceWith(data).find('input[type=text]').focus()
|
66
|
+
else
|
67
|
+
$(wrapper_selector).stop().css(opacity: 0.01).replaceWith(data).find('input[type=text]').focus()
|
68
|
+
else
|
69
|
+
$(document).delegate link_selector, 'click', (e) ->
|
70
|
+
e.preventDefault()
|
71
|
+
$.get e.currentTarget.href, (data)->
|
72
|
+
data = wrapper_form.html(data)[0].outerHTML if wrapper_form.length > 0
|
73
|
+
if $(data).find('img').length > 0
|
74
|
+
$(data).find('img').load ->
|
75
|
+
$(wrapper_selector).replaceWith(data).find('input[type=text]').focus()
|
76
|
+
else
|
77
|
+
$(wrapper_selector).replaceWith(data).find('input[type=text]').focus()
|
File without changes
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module Hancock::Feedback::Decorators
|
2
|
+
module Contacts
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
# included do
|
6
|
+
#
|
7
|
+
# def hancock_feedback_update_captcha_path
|
8
|
+
# url_for(action: :update_captcha, time: Time.new.to_i, only_path: true)
|
9
|
+
# end
|
10
|
+
# def is_cache_fields
|
11
|
+
# cache_fields?
|
12
|
+
# end
|
13
|
+
# def cache_fields?
|
14
|
+
# ['new', 'index'].include? action_name
|
15
|
+
# end
|
16
|
+
# def cache_key
|
17
|
+
# 'hancock_feedback_contacts_fields'.freeze
|
18
|
+
# end
|
19
|
+
# def fields_partial
|
20
|
+
# "hancock/feedback/contacts/#{(Hancock::Feedback.config.model_settings_support ? 'fields_with_settings' : 'fields')}".freeze
|
21
|
+
# end
|
22
|
+
# def settings_scope
|
23
|
+
# if Hancock::Feedback.config.model_settings_support
|
24
|
+
# model.settings
|
25
|
+
# elsif defined?(Settings)
|
26
|
+
# Settings.ns('feedback')
|
27
|
+
# else
|
28
|
+
# nil
|
29
|
+
# end
|
30
|
+
# end
|
31
|
+
# def recaptcha_options
|
32
|
+
# {}
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
#
|
36
|
+
# def render_contacts_error
|
37
|
+
# if request.xhr? && process_ajax
|
38
|
+
# render partial: form_partial, status: 422
|
39
|
+
# # render json: {errors: @contact_message.errors}, status: 422
|
40
|
+
# else
|
41
|
+
# flash.now[:alert] = @contact_message.errors.full_messages.join("\n")
|
42
|
+
# render action: Hancock::Feedback.configuration.recreate_contact_message_action, status: 422
|
43
|
+
# end
|
44
|
+
# end
|
45
|
+
# def process_ajax
|
46
|
+
# true
|
47
|
+
# end
|
48
|
+
# def ajax_success
|
49
|
+
# render partial: success_partial
|
50
|
+
# # render json: {ok: true}
|
51
|
+
# end
|
52
|
+
# def redirect_after_done
|
53
|
+
# redirect_to action: :sent
|
54
|
+
# end
|
55
|
+
# def xhr_checker
|
56
|
+
# if request.xhr?
|
57
|
+
# render layout: false
|
58
|
+
# end
|
59
|
+
# end
|
60
|
+
# def after_initialize
|
61
|
+
# end
|
62
|
+
# def after_create
|
63
|
+
# # overrideable hook for updating message
|
64
|
+
# end
|
65
|
+
# def form_partial
|
66
|
+
# "hancock/feedback/contacts/form"
|
67
|
+
# end
|
68
|
+
# def success_partial
|
69
|
+
# "hancock/feedback/contacts/success"
|
70
|
+
# end
|
71
|
+
# def model
|
72
|
+
# Hancock::Feedback::ContactMessage
|
73
|
+
# end
|
74
|
+
# def message_params
|
75
|
+
# params.require(model.to_param.gsub("::", "").underscore).permit(
|
76
|
+
# model.permitted_fields + [:name, :email, :phone, :content, :captcha, :captcha_key]
|
77
|
+
# )
|
78
|
+
# end
|
79
|
+
#
|
80
|
+
# end
|
81
|
+
|
82
|
+
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Hancock::Feedback
|
2
|
+
class ContactMailer < ActionMailer::Base
|
3
|
+
def new_message_email(message)
|
4
|
+
@message = message
|
5
|
+
|
6
|
+
#if message.attachment?
|
7
|
+
# attachments[message.attachment.identifier] = File.read(message.attachment.current_path)
|
8
|
+
#end
|
9
|
+
|
10
|
+
mail(
|
11
|
+
from: Settings.default_email_from(default: 'noreply@redrocks.pro'),
|
12
|
+
to: Settings.form_email(default: 'admin@redrocks.pro'),
|
13
|
+
subject: "[#{Settings.email_topic(default: 'с сайта')}] #{message.name} #{message.email}"
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Hancock::Feedback::Decorators
|
2
|
+
module ContactMessage
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
|
7
|
+
# def self.permitted_fields
|
8
|
+
# []
|
9
|
+
# end
|
10
|
+
#
|
11
|
+
# def self.default_cache_keys
|
12
|
+
# []
|
13
|
+
# end
|
14
|
+
#
|
15
|
+
# ############# rails_admin ##############
|
16
|
+
# def self.rails_admin_add_fields
|
17
|
+
# {}
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# def self.rails_admin_add_config(config)
|
21
|
+
# end
|
22
|
+
#
|
23
|
+
# def self.admin_can_user_defined_actions
|
24
|
+
# [].freeze
|
25
|
+
# end
|
26
|
+
# def self.admin_cannot_user_defined_actions
|
27
|
+
# [].freeze
|
28
|
+
# end
|
29
|
+
# def self.manager_can_user_defined_actions
|
30
|
+
# [].freeze
|
31
|
+
# end
|
32
|
+
# def self.manager_cannot_user_defined_actions
|
33
|
+
# [].freeze
|
34
|
+
# end
|
35
|
+
# def self.rails_admin_user_defined_visible_actions
|
36
|
+
# [].freeze
|
37
|
+
# end
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Hancock::Feedback
|
2
|
+
if Hancock::Feedback.active_record?
|
3
|
+
class ContactMessage < ActiveRecord::Base
|
4
|
+
end
|
5
|
+
end
|
6
|
+
|
7
|
+
class ContactMessage
|
8
|
+
|
9
|
+
include Hancock::Feedback::Models::ContactMessage
|
10
|
+
|
11
|
+
include Hancock::Feedback::Decorators::ContactMessage
|
12
|
+
|
13
|
+
rails_admin(&Hancock::Feedback::Admin::ContactMessage.config(rails_admin_add_fields) { |config|
|
14
|
+
rails_admin_add_config(config)
|
15
|
+
})
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
- excluded_column_names = %w[id c_at u_at created_at updated_at _id _type enabled attachment c_at u_at captcha captcha_key version creator_id creator updater_id updater modifier modifier_id]
|
2
|
+
|
3
|
+
h3= "Сообщение из формы связи:"
|
4
|
+
|
5
|
+
table
|
6
|
+
tr
|
7
|
+
th(style='padding: 2px 3px') Поле
|
8
|
+
th(style='padding: 2px 3px') Значение
|
9
|
+
- fields = (Hancock::Feedback.mongoid? ? Hancock::Feedback::ContactMessage.fields.keys : Hancock::Feedback::ContactMessage.columns.map(&:name))
|
10
|
+
- fields.reject{|c| excluded_column_names.include?(c) }.each do |c|
|
11
|
+
tr
|
12
|
+
td(style='padding: 2px 3px')
|
13
|
+
= Hancock::Feedback::ContactMessage.human_attribute_name(c)
|
14
|
+
td(style='padding: 2px 3px')
|
15
|
+
= @message.send(c.to_sym)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
ruby:
|
2
|
+
autofocus_field ||= :name
|
3
|
+
|
4
|
+
- label = t('hancock.feedback_plugin.fields.name.label')
|
5
|
+
- placeholder = t('hancock.feedback_plugin.fields.name.placeholder')
|
6
|
+
= f.input :name, label: label, input_html: {placeholder: placeholder, autofocus: autofocus_field == :name}
|
7
|
+
|
8
|
+
- label = t('hancock.feedback_plugin.fields.email.label')
|
9
|
+
- placeholder = t('hancock.feedback_plugin.fields.email.placeholder')
|
10
|
+
= f.input :email, label: label, input_html: {placeholder: placeholder, autofocus: autofocus_field == :email}
|
11
|
+
|
12
|
+
- label = t('hancock.feedback_plugin.fields.phone.label')
|
13
|
+
- placeholder = t('hancock.feedback_plugin.fields.phone.placeholder')
|
14
|
+
= f.input :phone, label: label, input_html: {placeholder: placeholder, autofocus: autofocus_field == :phone}
|
15
|
+
|
16
|
+
- label = t('hancock.feedback_plugin.fields.content.label')
|
17
|
+
- placeholder = t('hancock.feedback_plugin.fields.content.placeholder')
|
18
|
+
= f.input :content, as: :text, label: label, input_html: {placeholder: placeholder, autofocus: autofocus_field == :content}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
ruby:
|
2
|
+
cache_key ||= 'views/hancock_feedback_contacts_fields'.freeze
|
3
|
+
if Hancock::Feedback.config.model_settings_support
|
4
|
+
settings_scope ||= Hancock::Feedback::ContactMessage.settings
|
5
|
+
elsif defined?(Settings)
|
6
|
+
settings_scope ||= Settings.ns('feedback')
|
7
|
+
end
|
8
|
+
autofocus_field ||= :name
|
9
|
+
|
10
|
+
- label = settings_scope.name_label(default: t('hancock.feedback_plugin.fields.name.label'), label: "Заголовок поля ФИО", cache_keys: cache_key)
|
11
|
+
- placeholder = settings_scope.name_placeholder(default: t('hancock.feedback_plugin.fields.name.placeholder'), label: "Placeholder поля ФИО", cache_keys: cache_key)
|
12
|
+
= f.input :name, label: label, input_html: {placeholder: placeholder, autofocus: autofocus_field == :name}
|
13
|
+
|
14
|
+
- label = settings_scope.email_label(default: t('hancock.feedback_plugin.fields.email.label'), label: "Заголовок поля e-mail", cache_keys: cache_key)
|
15
|
+
- placeholder = settings_scope.email_placeholder(default: t('hancock.feedback_plugin.fields.email.placeholder'), label: "Placeholder поля e-mail", cache_keys: cache_key)
|
16
|
+
= f.input :email, label: label, input_html: {placeholder: placeholder, autofocus: autofocus_field == :email}
|
17
|
+
|
18
|
+
- label = settings_scope.phone_label(default: t('hancock.feedback_plugin.fields.phone.label'), label: "Заголовок поля телефон", cache_keys: cache_key)
|
19
|
+
- placeholder = settings_scope.phone_placeholder(default: t('hancock.feedback_plugin.fields.phone.placeholder'), label: "Placeholder поля телефон", cache_keys: cache_key)
|
20
|
+
= f.input :phone, label: label, input_html: {placeholder: placeholder, autofocus: autofocus_field == :phone}
|
21
|
+
|
22
|
+
- label = settings_scope.content_label(default: t('hancock.feedback_plugin.fields.content.label'), label: "Заголовок поля сообщение", cache_keys: cache_key)
|
23
|
+
- placeholder = settings_scope.content_placeholder(default: t('hancock.feedback_plugin.fields.content.placeholder'), label: "Placeholder поля сообщение", cache_keys: cache_key)
|
24
|
+
= f.input :content, as: :text, label: label, input_html: {placeholder: placeholder, autofocus: autofocus_field == :content}
|