tramway-sport_school 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +28 -0
  4. data/Rakefile +36 -0
  5. data/app/assets/config/tramway_sport_school_manifest.js +2 -0
  6. data/app/assets/images/tramway/sport_school/1.jpg +0 -0
  7. data/app/assets/images/tramway/sport_school/11.jpg +0 -0
  8. data/app/assets/images/tramway/sport_school/12.jpg +0 -0
  9. data/app/assets/images/tramway/sport_school/13.jpg +0 -0
  10. data/app/assets/images/tramway/sport_school/6.jpg +0 -0
  11. data/app/assets/images/tramway/sport_school/7.jpg +0 -0
  12. data/app/assets/images/tramway/sport_school/9.jpg +0 -0
  13. data/app/assets/images/tramway/sport_school/admin.jpg +0 -0
  14. data/app/assets/images/tramway/sport_school/annvs73.jpg +0 -0
  15. data/app/assets/images/tramway/sport_school/default.jpg +0 -0
  16. data/app/assets/images/tramway/sport_school/director.jpg +0 -0
  17. data/app/assets/images/tramway/sport_school/gosuslugi.jpg +0 -0
  18. data/app/assets/images/tramway/sport_school/knnvs.png +0 -0
  19. data/app/assets/images/tramway/sport_school/min_sport.jpg +0 -0
  20. data/app/assets/images/tramway/sport_school/rule_sport.jpg +0 -0
  21. data/app/assets/javascripts/tramway/sport_school/application.js.coffee +13 -0
  22. data/app/assets/javascripts/tramway/sport_school/jquery.scrollTo.min.js +7 -0
  23. data/app/assets/javascripts/tramway/sport_school/tramway/sport_school/web/welcome.js +2 -0
  24. data/app/assets/javascripts/tramway/sport_school/web/welcome.js +2 -0
  25. data/app/assets/stylesheets/tramway/sport_school/application.css.sass +7 -0
  26. data/app/controllers/tramway/sport_school/application_controller.rb +13 -0
  27. data/app/controllers/tramway/sport_school/web/welcome_controller.rb +13 -0
  28. data/app/decorators/tramway/sport_school/cards/trainer_decorator.rb +11 -0
  29. data/app/decorators/tramway/sport_school/document_decorator.rb +24 -0
  30. data/app/decorators/tramway/sport_school/features/kind_sport_decorator.rb +11 -0
  31. data/app/decorators/tramway/sport_school/institution_decorator.rb +9 -0
  32. data/app/decorators/tramway/sport_school/kind_sport_decorator.rb +24 -0
  33. data/app/decorators/tramway/sport_school/organization_decorator.rb +24 -0
  34. data/app/decorators/tramway/sport_school/trainer_decorator.rb +38 -0
  35. data/app/forms/tramway/sport_school/document_form.rb +9 -0
  36. data/app/forms/tramway/sport_school/institution_form.rb +14 -0
  37. data/app/forms/tramway/sport_school/kind_sport_form.rb +9 -0
  38. data/app/forms/tramway/sport_school/organization_form.rb +13 -0
  39. data/app/forms/tramway/sport_school/trainer_form.rb +14 -0
  40. data/app/helpers/tramway/sport_school/application_helper.rb +7 -0
  41. data/app/helpers/tramway/sport_school/web/welcome_helper.rb +5 -0
  42. data/app/jobs/tramway/sport_school/application_job.rb +6 -0
  43. data/app/mailers/tramway/sport_school/application_mailer.rb +8 -0
  44. data/app/models/tramway/sport_school/document.rb +18 -0
  45. data/app/models/tramway/sport_school/institution.rb +5 -0
  46. data/app/models/tramway/sport_school/kind_sport.rb +21 -0
  47. data/app/models/tramway/sport_school/organization.rb +21 -0
  48. data/app/models/tramway/sport_school/trainer.rb +23 -0
  49. data/app/views/tramway/sport_school/web/welcome/_adults.html.haml +23 -0
  50. data/app/views/tramway/sport_school/web/welcome/_contacts.html.haml +3 -0
  51. data/app/views/tramway/sport_school/web/welcome/_directors_text.html.haml +18 -0
  52. data/app/views/tramway/sport_school/web/welcome/_footer.html.haml +28 -0
  53. data/app/views/tramway/sport_school/web/welcome/_header.html.haml +17 -0
  54. data/app/views/tramway/sport_school/web/welcome/_parents.html.haml +15 -0
  55. data/app/views/tramway/sport_school/web/welcome/_schoolkids.html.haml +3 -0
  56. data/app/views/tramway/sport_school/web/welcome/index.html.haml +43 -0
  57. data/app/views/tramway/sport_school/web/welcome/shared/_block.html.haml +5 -0
  58. data/app/views/tramway/sport_school/web/welcome/shared/_kind_sport.html.haml +4 -0
  59. data/app/views/tramway/sport_school/web/welcome/shared/_man_card.html.haml +5 -0
  60. data/config/initializers/simple_form.rb +22 -0
  61. data/config/initializers/simple_form_bootstrap.rb +133 -0
  62. data/config/initializers/tramway.rb +8 -0
  63. data/config/locales/models.yml +64 -0
  64. data/config/locales/ru.yml +16 -0
  65. data/config/locales/state_machines.yml +28 -0
  66. data/config/routes.rb +11 -0
  67. data/db/migrate/20180117222018_create_tramway_user_users.rb +18 -0
  68. data/db/migrate/20180117222019_create_tramway_sport_school_kind_sports.rb +9 -0
  69. data/db/migrate/20180117222020_add_state_to_tramway_sport_school_kind_sports.rb +6 -0
  70. data/db/migrate/20180117222021_add_image_to_tramway_sport_school_kind_sports.rb +5 -0
  71. data/db/migrate/20180117222022_create_tramway_sport_school_trainers.rb +13 -0
  72. data/db/migrate/20180117223438_install_audited.rb +30 -0
  73. data/lib/tasks/tramway/sport_school_tasks.rake +4 -0
  74. data/lib/tramway/sport_school.rb +8 -0
  75. data/lib/tramway/sport_school/engine.rb +9 -0
  76. data/lib/tramway/sport_school/generates/install_generator.rb +37 -0
  77. data/lib/tramway/sport_school/generates/templates/add_contacts_to_tramway_sport_school_institutions.rb +6 -0
  78. data/lib/tramway/sport_school/generates/templates/add_degree_to_tramway_sport_school_trainers.rb +6 -0
  79. data/lib/tramway/sport_school/generates/templates/add_description_to_tramway_sport_school_kind_sports.rb +5 -0
  80. data/lib/tramway/sport_school/generates/templates/add_description_to_tramway_sport_school_trainers.rb +5 -0
  81. data/lib/tramway/sport_school/generates/templates/add_image_to_tramway_sport_school_kind_sports.rb +5 -0
  82. data/lib/tramway/sport_school/generates/templates/add_ll_to_tramway_sport_school_institutions.rb +6 -0
  83. data/lib/tramway/sport_school/generates/templates/add_state_to_tramway_sport_school_kind_sports.rb +6 -0
  84. data/lib/tramway/sport_school/generates/templates/create_tramway_sport_school_documents.rb +12 -0
  85. data/lib/tramway/sport_school/generates/templates/create_tramway_sport_school_institutions.rb +12 -0
  86. data/lib/tramway/sport_school/generates/templates/create_tramway_sport_school_kind_sports.rb +9 -0
  87. data/lib/tramway/sport_school/generates/templates/create_tramway_sport_school_organizations.rb +15 -0
  88. data/lib/tramway/sport_school/generates/templates/create_tramway_sport_school_trainers.rb +13 -0
  89. data/lib/tramway/sport_school/version.rb +5 -0
  90. metadata +146 -0
@@ -0,0 +1,5 @@
1
+ module Tramway::SportSchool
2
+ module Web::WelcomeHelper
3
+ include ::Tramway::Landing::ApplicationHelper
4
+ end
5
+ end
@@ -0,0 +1,6 @@
1
+ module Tramway
2
+ module SportSchool
3
+ class ApplicationJob < ActiveJob::Base
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,8 @@
1
+ module Tramway
2
+ module SportSchool
3
+ class ApplicationMailer < ActionMailer::Base
4
+ default from: 'from@example.com'
5
+ layout 'mailer'
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,18 @@
1
+ module Tramway::SportSchool
2
+ class Document < ::Tramway::Core::ApplicationRecord
3
+ mount_uploader :file, FileUploader
4
+
5
+ state_machine :view_state, initial: :published do
6
+ state :published
7
+ state :hidden
8
+
9
+ event :publish do
10
+ transition hidden: :published
11
+ end
12
+
13
+ event :hide do
14
+ transition published: :hidden
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,5 @@
1
+ module Tramway::SportSchool
2
+ class Institution < ::Tramway::Core::ApplicationRecord
3
+ has_many :social_networks, as: :record, class_name: 'Tramway::Profiles::SocialNetwork'
4
+ end
5
+ end
@@ -0,0 +1,21 @@
1
+ module Tramway::SportSchool
2
+ class KindSport < ::Tramway::Core::ApplicationRecord
3
+ mount_uploader :image, PhotoUploader
4
+
5
+ state_machine :view_state, initial: :published do
6
+ state :published
7
+ state :hidden
8
+
9
+ event :publish do
10
+ transition hidden: :published
11
+ end
12
+
13
+ event :hide do
14
+ transition published: :hidden
15
+ end
16
+ end
17
+
18
+ scope :published, -> { where view_state: :published }
19
+ scope :hidden, -> { where view_state: :hidden }
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ class Tramway::SportSchool::Organization < ::Tramway::Core::ApplicationRecord
2
+ mount_uploader :logo, PhotoUploader
3
+
4
+ enumerize :organization_type, in: [ :required, :partner, :sponsor ], default: :required
5
+
6
+ state_machine :view_state, initial: :published do
7
+ state :published
8
+ state :hidden
9
+
10
+ event :publish do
11
+ transition hidden: :published
12
+ end
13
+
14
+ event :hide do
15
+ transition published: :hidden
16
+ end
17
+ end
18
+
19
+ scope :published, -> { where view_state: :published }
20
+ scope :hidden, -> { where view_state: :hidden }
21
+ end
@@ -0,0 +1,23 @@
1
+ module Tramway::SportSchool
2
+ class Trainer < ::Tramway::Core::ApplicationRecord
3
+ enumerize :degree, in: [ :master_of_sport, :candidate_master_of_sports ]
4
+
5
+ mount_uploader :photo, PhotoUploader
6
+
7
+ state_machine :view_state, initial: :published do
8
+ state :published
9
+ state :hidden
10
+
11
+ event :publish do
12
+ transition hidden: :published
13
+ end
14
+
15
+ event :hide do
16
+ transition published: :hidden
17
+ end
18
+ end
19
+
20
+ scope :published, -> { where view_state: :published }
21
+ scope :hidden, -> { where view_state: :hidden }
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ = render 'tramway/sport_school/web/welcome/shared/block', id: :adults do
2
+ %h1.cover-heading Ищете удобное место для занятия спортом?
3
+ %p.lead
4
+ Не знаете, как занять себя в свободное время? Любите спорт, но не знаете куда пойти? Приходите к нам! В нашем обновлённом спортивном зале вас ждут:
5
+ %ul
6
+ %li тренажеры на все группы мышц;
7
+ %li квалифицированный тренер, под чьим руководством вы будете заниматься, а это значит, что никаких травм – только результат;
8
+ %li супер-низкие цены.
9
+
10
+ = render 'tramway/sport_school/web/welcome/shared/block', id: :kind_sports do
11
+ .row
12
+ = render 'tramway/sport_school/web/welcome/shared/kind_sport', photo: 'tramway/sport_school/1.jpg', title: 'Шахматы'
13
+ = render 'tramway/sport_school/web/welcome/shared/kind_sport', photo: 'tramway/sport_school/default.jpg', title: 'Горнолыжный спорт'
14
+ = render 'tramway/sport_school/web/welcome/shared/kind_sport', photo: 'tramway/sport_school/default.jpg', title: 'Дзюдо'
15
+ = render 'tramway/sport_school/web/welcome/shared/kind_sport', photo: 'tramway/sport_school/default.jpg', title: 'Гиревой спорт'
16
+ = render 'tramway/sport_school/web/welcome/shared/kind_sport', photo: 'tramway/sport_school/default.jpg', title: 'Спортивное ориентирование'
17
+ = render 'tramway/sport_school/web/welcome/shared/kind_sport', photo: 'tramway/sport_school/6.jpg', title: 'Бокс'
18
+ = render 'tramway/sport_school/web/welcome/shared/kind_sport', photo: 'tramway/sport_school/7.jpg', title: 'Лыжные гонки'
19
+ = render 'tramway/sport_school/web/welcome/shared/kind_sport', photo: 'tramway/sport_school/default.jpg', title: 'Каратэ'
20
+ = render 'tramway/sport_school/web/welcome/shared/kind_sport', photo: 'tramway/sport_school/9.jpg', title: 'Спортивная аэробика'
21
+ = render 'tramway/sport_school/web/welcome/shared/kind_sport', photo: 'tramway/sport_school/11.jpg', title: 'Армрестлинг'
22
+ = render 'tramway/sport_school/web/welcome/shared/kind_sport', photo: 'tramway/sport_school/12.jpg', title: 'Футбол'
23
+ = render 'tramway/sport_school/web/welcome/shared/kind_sport', photo: 'tramway/sport_school/13.jpg', title: 'Сноуборд'
@@ -0,0 +1,3 @@
1
+ = render 'tramway/sport_school/web/welcome/shared/block', id: :contacts do
2
+ %h1.cover-heading Контакты
3
+ %p.lead Главный слоган спортивной школы Ленинского района
@@ -0,0 +1,18 @@
1
+ = render 'tramway/sport_school/web/welcome/shared/block', id: :directors_text do
2
+ .row.justify-content-center
3
+ .media
4
+ = image_tag 'tramway/sport_school/director.jpg', class: 'align-self-center mr-3', style: 'height: 20vw'
5
+ .media-body.text-left
6
+ Доброго времени суток, меня зовут Егоров Рамиль Евгеньевич!
7
+ %br
8
+ Всю свою сознательную жизнь я посвятил спорту.
9
+ %br
10
+ С большим трепетом я вспоминаю свои школьные годы и первые шаги на старте в будущее. В будущее, где я буду носить гордое звание - спортсмен! Конечно, здесь необходимо упомянуть человека, которые сопровождали меня в начале моего пути - это Заслуженный тренер России Курдюмов Анатолий Константинович и ЗТР Мерчин Владимир Александрович. Именно они помогли мне понять, что спорт - это гораздо больше, чем ежедневные тренировки и выработка определённых рефлексов. Спорт - это здоровье, сила воли, дисциплинированность, достоинство, умение самоанализа. Спорт - это образ жизни. Он объяснил мне, что для спортсмена победа важнее участия, но и не всякое поражение должно восприниматься как проигрыш. И за это я благодарен больше всего. Ведь буквально пару лет назад я и сам был в качестве тренера и пытался объяснить совсем юным мальчишкам, каким и я тогда был, что прежде чем заслужить свою первую победу придётся не раз прочувствовать поражение, но согласитесь, что оно того стоит!
11
+ %br
12
+ Без преувеличения могу сказать, что эта школа одна из лучших в городе! Ежегодно сотни юных спортсменов ДЮСШ Ленинского района занимают призовые места на межрегиональных и международных соревнованиях доказывая всему миру, что в Ульяновске одно из лучших дополнительных образований в сфере спорта. Конечно, это было бы невозможно без тренеров, которые не жалея себя воспитывают в юных ребятах будущих именитых спортсменов. На сегодняшний день в школе работают 13 отделений по олимпийским и неолимпийским видам спорта, учатся более 1000 спортсменов, работают 30 тренеров-преподавателей и я уверен, что это не предел!
13
+ %br
14
+ Если вы выберете нашу школу в качестве первой ступени в большой спорт – уверяю вас вы не пожалеете!
15
+ %br
16
+ %br
17
+ %h4
18
+ Директор ДЮСШ "Симбирск" Ленинского района города Ульяновска, Р.Е. Егоров
@@ -0,0 +1,28 @@
1
+ %footer
2
+ .row
3
+ .col
4
+ = link_to 'http://ulmeria.ru/' do
5
+ = image_tag 'tramway/sport_school/admin.jpg', class: 'img-thumbnail'
6
+ .col
7
+ = link_to 'http://sport.ulgov.ru/' do
8
+ = image_tag 'tramway/sport_school/min_sport.jpg', class: 'img-thumbnail'
9
+ .col
10
+ = link_to 'http://ulkms.ru/' do
11
+ = image_tag 'tramway/sport_school/rule_sport.jpg', class: 'img-thumbnail'
12
+ .col
13
+ = link_to 'http://knnvs.com/' do
14
+ = image_tag 'tramway/sport_school/knnvs.png', class: 'img-thumbnail'
15
+ .col
16
+ = link_to 'https://vk.com/annvs73' do
17
+ = image_tag 'tramway/sport_school/annvs73.jpg', class: 'img-thumbnail'
18
+ .col
19
+ = link_to 'http://gosuslugi.ru' do
20
+ = image_tag 'tramway/sport_school/gosuslugi.jpg', class: 'img-thumbnail'
21
+ .row
22
+ .col
23
+ %h5
24
+ Документы
25
+ %ul
26
+ - @documents.each do |document|
27
+ %li
28
+ = link_to document.title, document.file.url
@@ -0,0 +1,17 @@
1
+ .site-wrapper
2
+ .site-wrapper-inner
3
+ .cover-container
4
+ %main.inner.cover{ role: :main }
5
+ %h1.cover-heading Спортивная школа Ленинского района
6
+ %p.lead Главный слоган спортивной школы Ленинского района
7
+ %p.lead
8
+ - [ :parents, :schoolkids, :adults ].each do |block|
9
+ = link_to t("blocks.header_buttons.#{block}"), "##{block}", class: 'btn btn-lg btn-secondary scroll', data: { id: block }
10
+ .inner
11
+ %p
12
+ г.Ульяновск, ул.Марата, 9
13
+ %p
14
+ 8(8422) 58-96-07
15
+ %p
16
+ = link_to fa_icon('vk 4x'), 'https://vk.com/'
17
+ = link_to fa_icon('twitter 4x'), 'https://twitter.com/'
@@ -0,0 +1,15 @@
1
+ = render 'tramway/sport_school/web/welcome/shared/block', id: :parents do
2
+ %h1.cover-heading{ style: 'color: white' } Мы находимся в центре города
3
+ %p.lead{ style: 'color: white' } Вы живете в Ленинском районе города Ульяновска? Или может быть ваш ребенок учится в одной из центральных школ города? Вы стали замечать, что у него есть способности к спорту? Тогда вам сюда!
4
+
5
+
6
+ = render 'tramway/sport_school/web/welcome/shared/block', id: :trainers do
7
+ .row
8
+ .col
9
+ %h1.cover-heading{ style: 'color: white' }
10
+ Опытный коллектив тренеров
11
+ %hr
12
+ .row
13
+ - @trainers.each do |trainer|
14
+ .col-2{ style: 'margin-top: 25px;' }
15
+ = render 'tramway/sport_school/web/welcome/shared/man_card', photo: trainer.photo.medium.url, name: trainer.initial_short_name, position: trainer.description
@@ -0,0 +1,3 @@
1
+ = render 'tramway/sport_school/web/welcome/shared/block', id: :schoolkids do
2
+ %h1.cover-heading школьники
3
+ %p.lead Главный слоган спортивной школы Ленинского района
@@ -0,0 +1,43 @@
1
+ = content_for :head_content do
2
+ = stylesheet_link_tag 'tramway/sport_school/application', media: 'all'
3
+ = javascript_include_tag 'tramway/sport_school/application'
4
+
5
+ = content_for :application_name do
6
+ = @application.title || t('application.name')
7
+
8
+ = content_for :title do
9
+ = @application.title || t('application.name')
10
+
11
+ = content_for :application_tagline do
12
+ = @application.tagline || t('application.tagline')
13
+
14
+ = content_for :address do
15
+ = @institution.address
16
+
17
+ = content_for :phone do
18
+ = @institution.phone
19
+
20
+ = content_for :navbar do
21
+ - [ :parents, :schoolkids, :adults, :contacts ].each do |block|
22
+ = menu_item t("blocks.navbar_links.#{block}"), "##{block}"
23
+
24
+ = content_for :footer_links do
25
+ %h5.title
26
+ = plural Tramway::SportSchool::Document.model_name
27
+ %ul
28
+ - @documents.each do |document|
29
+ %li
30
+ = link_to document.title, document.file.url
31
+
32
+ = content_for :footer_logos do
33
+ - @organizations.each do |organization|
34
+ = image_tag organization.logo.url
35
+
36
+ = content_for :latitude do
37
+ = @institution.latitude
38
+
39
+ = content_for :longtitude do
40
+ = @institution.longtitude
41
+ - @collection_parents = @trainers
42
+ - @collection_kindsports = @kind_sports
43
+ - @collection_news = @news
@@ -0,0 +1,5 @@
1
+ .site-wrapper{ id: id }
2
+ .site-wrapper-inner
3
+ .cover-container
4
+ %main.inner.cover{ role: 'main' }
5
+ = yield
@@ -0,0 +1,4 @@
1
+ .col-md-3
2
+ = image_tag photo, class: 'img-fluid rounded', alt: title
3
+ %h3
4
+ = title
@@ -0,0 +1,5 @@
1
+ = image_tag photo, class: 'img-fluid img-thumbnail rounded-circle'
2
+ %h3{ style: 'color: white; line-height: 1' }
3
+ = name
4
+ .lead{ style: 'color: white; line-height: 1' }
5
+ = position
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ SimpleForm.setup do |config|
3
+ config.wrappers :default, class: :input,
4
+ hint_class: :field_with_hint, error_class: :field_with_errors do |b|
5
+ b.use :html5
6
+ b.use :placeholder
7
+ b.optional :maxlength
8
+ b.optional :pattern
9
+ b.optional :min_max
10
+ b.optional :readonly
11
+ b.use :label_input
12
+ b.use :hint, wrap_with: { tag: :span, class: :hint }
13
+ b.use :error, wrap_with: { tag: :span, class: :error }
14
+ end
15
+ config.default_wrapper = :default
16
+ config.boolean_style = :nested
17
+ config.button_class = 'btn'
18
+ config.error_notification_tag = :div
19
+ config.error_notification_class = 'error_notification'
20
+ config.browser_validations = false
21
+ config.boolean_label_class = 'checkbox'
22
+ end
@@ -0,0 +1,133 @@
1
+ # frozen_string_literal: true
2
+
3
+ SimpleForm.setup do |config|
4
+ config.error_notification_class = 'alert alert-danger'
5
+ config.button_class = 'btn btn-default'
6
+ config.boolean_label_class = nil
7
+
8
+ config.wrappers :vertical_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
9
+ b.use :html5
10
+ b.use :placeholder
11
+ b.optional :maxlength
12
+ b.optional :pattern
13
+ b.optional :min_max
14
+ b.optional :readonly
15
+ b.use :label, class: 'control-label'
16
+
17
+ b.use :input, class: 'form-control'
18
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
19
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
20
+ end
21
+
22
+ config.wrappers :vertical_file_input, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
23
+ b.use :html5
24
+ b.use :placeholder
25
+ b.optional :maxlength
26
+ b.optional :readonly
27
+ b.use :label, class: 'control-label'
28
+
29
+ b.use :input
30
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
31
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
32
+ end
33
+
34
+ config.wrappers :vertical_boolean, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
35
+ b.use :html5
36
+ b.optional :readonly
37
+
38
+ b.wrapper tag: 'div', class: 'checkbox' do |ba|
39
+ ba.use :label_input
40
+ end
41
+
42
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
43
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
44
+ end
45
+
46
+ config.wrappers :vertical_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
47
+ b.use :html5
48
+ b.optional :readonly
49
+ b.use :label, class: 'control-label'
50
+ b.use :input
51
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
52
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
53
+ end
54
+
55
+ config.wrappers :horizontal_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
56
+ b.use :html5
57
+ b.use :placeholder
58
+ b.optional :maxlength
59
+ b.optional :pattern
60
+ b.optional :min_max
61
+ b.optional :readonly
62
+ b.use :label, class: 'col-sm-3 control-label'
63
+
64
+ b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
65
+ ba.use :input, class: 'form-control'
66
+ ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
67
+ ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
68
+ end
69
+ end
70
+
71
+ config.wrappers :horizontal_file_input, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
72
+ b.use :html5
73
+ b.use :placeholder
74
+ b.optional :maxlength
75
+ b.optional :readonly
76
+ b.use :label, class: 'col-sm-3 control-label'
77
+
78
+ b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
79
+ ba.use :input
80
+ ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
81
+ ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
82
+ end
83
+ end
84
+
85
+ config.wrappers :horizontal_boolean, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
86
+ b.use :html5
87
+ b.optional :readonly
88
+
89
+ b.wrapper tag: 'div', class: 'col-sm-offset-3 col-sm-9' do |wr|
90
+ wr.wrapper tag: 'div', class: 'checkbox' do |ba|
91
+ ba.use :label_input, class: 'col-sm-9'
92
+ end
93
+
94
+ wr.use :error, wrap_with: { tag: 'span', class: 'help-block' }
95
+ wr.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
96
+ end
97
+ end
98
+
99
+ config.wrappers :horizontal_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
100
+ b.use :html5
101
+ b.optional :readonly
102
+
103
+ b.use :label, class: 'col-sm-3 control-label'
104
+
105
+ b.wrapper tag: 'div', class: 'col-sm-9' do |ba|
106
+ ba.use :input
107
+ ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
108
+ ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
109
+ end
110
+ end
111
+
112
+ config.wrappers :inline_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
113
+ b.use :html5
114
+ b.use :placeholder
115
+ b.optional :maxlength
116
+ b.optional :pattern
117
+ b.optional :min_max
118
+ b.optional :readonly
119
+ b.use :label, class: 'sr-only'
120
+
121
+ b.use :input, class: 'form-control'
122
+ b.use :error, wrap_with: { tag: 'span', class: 'help-block' }
123
+ b.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
124
+ end
125
+
126
+ config.default_wrapper = :vertical_form
127
+ config.wrapper_mappings = {
128
+ check_boxes: :vertical_radio_and_checkboxes,
129
+ radio_buttons: :vertical_radio_and_checkboxes,
130
+ file: :vertical_file_input,
131
+ boolean: :vertical_boolean
132
+ }
133
+ end