0.0
No commit activity in last 3 years
No release in over 3 years
Order form
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.9
~> 10.0

Runtime

 Project Readme

Gem Version Build Status

C80OrderForm

This gem allows to users to send order messages from site.

Features

  • Сообщения сохраняются в базу, их можно просмотреть через админку, они уходят на почту ("хардкод", зависимость от окружения: SiteProp.first.mail_from и SiteProp.first.mail_to, см. c80_order_form/app/mailers/c80_order_form/message_order_mailer.rb).
  • Форма защищена от спама без каких либо капч - она приходит с сервера в виде html-строки при клике по кнопке и вставляется на страницу с помощью js.
  • Можно вводить как правильный номер телефона (в каком угодно формате), так и корректный email в одно единственное поле.

Installation

Add this line to your application's Gemfile:

gem 'c80_order_form'

Migrate:

rake db:migrate
rake db:migrate RAILS_ENV=production

Setup

NOTE: This gem uses activeadmin gem, jQuery gem, bootstrap-sass gem and c80_modal_forms gem.

Ensure, that your application's Gemfile contains these lines:

# active admin
gem 'activeadmin'
gem 'devise'
gem 'cancan' # or cancancan
gem 'draper'
gem 'pundit'

gem 'jquery-rails'
gem 'bootstrap-sass'
gem 'c80_modal_forms'

You will need to add these lines into your application.js:

//= require bootstrap/modal
//= require bootstrap/transitions
//= require c80_modal_forms
//= require c80_order_form

And add this line into application.scss:

@import "bootstrap-sprockets";
@import "bootstrap";
@import "c80_order_form";

Add this line into active_admin.scss:

@import "c80_order_form_active_admin";

Add this line into routes.rb:

mount C80OrderForm::Engine => '/'

Wget custom_seed.rake to lib/tasks:

$ cd lib/tasks
$ wget https://gist.githubusercontent.com/c80609a/ce9058d176c793877562411439b27a17/raw/288d7c57c25debc972541633077a99177c2b689c/custom_seed.rake

Create and execute the seed db/seeds:

# rake db:seed:103_fill_order_form_settings

C80OrderForm::Settings.delete_all
C80OrderForm::Settings.create!({
                                   :order_form_title => "Заявка на бронирование",
                                   :order_form_label_name => "Имя",
                                   :order_form_label_email_or_phone => "Email или телефон",
                                   :order_form_label_comment => "Комментарий",
                                   :order_form_label_button_send => "Отправить",
                                   :order_form_label_button_sending => "Отправляется...",
                                   :ok_text => "Мы свяжемся с Вами в ближайшее время",
                                   :ok_text_title => "Ваша заявка отправлена",
                                   :admin_label_menu => "Заявки на бронирование",
                                   :message_letter_subj => "Заявка на бронирование",
                                   :message_text => " • Имя: {name}<br>" +
                                       " • Email или телефон: {email_or_phone}<br>" +
                                       " • Сообщение: {comment}<br>" +
                                       " --------------------------------------<br>" +
                                       " Бронируемая площадь: <a href='http://xxx.ru/areas/{subj_id}'>http://xxx.ru/areas/{subj_id}</a><br>" +
                                       " Бронируемая площадь в админке: <a href='http://xxx.ru/admin/areas/{subj_id}/edit'>http://xxx.ru/admin/areas/{subj_id}</a><br>"
                               })

Или такой файл (если подразумевается абстрактное сообщение с сайта, не свяазанное ни с каким объектом):

# rake db:seed:103_fill_order_form_settings

C80OrderForm::Settings.delete_all
C80OrderForm::Settings.create!({
                                   :order_form_title => 'Заявка на бронирование',
                                   :order_form_label_name => 'Имя',
                                   :order_form_label_email_or_phone => 'Email или телефон',
                                   :order_form_label_comment => 'Комментарий',
                                   :order_form_label_button_send => 'Отправить',
                                   :order_form_label_button_sending => 'Отправляется...',
                                   :ok_text => 'Мы свяжемся с Вами в ближайшее время',
                                   :ok_text_title => 'Ваша заявка отправлена',
                                   :admin_label_menu => 'Заявки на бронирование',
                                   :message_letter_subj => 'Заявка на бронирование',
                                   :message_text => ' • Имя: {name}<br>' +
                                       ' • Email или телефон: {email_or_phone}<br>' +
                                       ' • Сообщение: {comment}'
                               })

Usage

Form invoked by link with class c80_order_invoking_btn:

        = link_to "Book it",
                  "#",
                  :title => "Book it",
                  :class => "c80_order_invoking_btn",
                  :data => { :comment_text => "Hello, I want book the room '#{@area.title}'.", 
                             :subj_id => @area.id 
                  }

TODO

  • Перенести mail_to в настройки гема
  • Добавить анимированный прелоадер при клике по кнопке, которая запрашивает форму
  • Добавить анимированный прелоадер при клике по кнопке, которая отправляет данные формы на сервер