spina_contact_forms 0.1.2 → 0.1.3
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/README.md +13 -2
- data/app/controllers/spina/admin/contact_form_elements_controller.rb +22 -0
- data/app/controllers/spina/admin/contact_forms_controller.rb +2 -2
- data/app/helpers/spina_contact_forms/contact_forms_helper.rb +1 -1
- data/app/models/spina/contact_form_element.rb +3 -0
- data/app/views/spina/admin/contact_form_elements/_contact_form_element.html.haml +7 -4
- data/app/views/spina/admin/contact_form_elements/_edit.html.haml +24 -0
- data/app/views/spina/admin/contact_form_elements/create.js.erb +1 -1
- data/app/views/spina/admin/contact_form_elements/edit.js.erb +3 -0
- data/app/views/spina/admin/contact_forms/index.html.haml +8 -11
- data/app/views/spina/contact_forms/_page.html.haml +2 -1
- data/config/routes.rb +4 -2
- data/db/migrate/20170330144159_add_position_and_theme_to_spina_contact_form_elements.rb +6 -0
- data/lib/spina_contact_forms/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4efda7177e4e030cd9b028cdac12a05f6bda54e
|
4
|
+
data.tar.gz: d3366ee2dbe8c832b37639719266ef67dddc2cb3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7049bef23f24e8238c1376dff430c46b06eb38881f11b8f3fd8405551e05a7b80044eebe59b862d367cc67c444548b17a2a506e00098f2cf8d63dfa0f5596e65
|
7
|
+
data.tar.gz: 1363a1b9d2f361a485e829367edebd53c39553ea190b73eceffb4b38aac6e90d2a1ea0559cd4e9e5702cee01b810ab11a71b9b906ce2762699ded33e9ce537f8
|
data/README.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# SpinaContactForms
|
2
|
-
This will add a contact form builder
|
2
|
+
This will add a contact form builder in spina. You can create form elements in the backend that will populate the form in the frontend.
|
3
|
+
|
4
|
+
This is a work in progress.
|
5
|
+
|
6
|
+
Please update to the latest version, anything under '0.1.2' will NOT work.
|
3
7
|
|
4
8
|
## Installation
|
5
9
|
Add this line to your application's Gemfile:
|
@@ -33,7 +37,7 @@ Add the following to your theme's config file (config/initializers/themes/theme_
|
|
33
37
|
theme.plugins = ['ContactForm']
|
34
38
|
```
|
35
39
|
|
36
|
-
Copy and run the migrations
|
40
|
+
Copy and run the migrations, make sure to do this when upgrading as well, since new migragtions could be added.
|
37
41
|
```bash
|
38
42
|
rake spina_contact_forms_engine:install:migrations
|
39
43
|
rake db:migrate
|
@@ -43,13 +47,20 @@ rake db:migrate
|
|
43
47
|
In your view, call `<%= spina_contact_form%>`
|
44
48
|
That's it! Use Mailcatcher for local development, and test it out.
|
45
49
|
|
50
|
+
Contact Forms are scoped to the current_theme, so any changes to the theme name or setting a different theme for the account will cause a separate contact form to be loaded.
|
51
|
+
|
46
52
|
## Contributing
|
47
53
|
Contributions are welcome! It is still in an early stage, and more features are required. Fork it, and create a pull request.
|
48
54
|
|
49
55
|
## Roadmap
|
50
56
|
* Currently only text inputs and text areas are supported, select dropdowns, check boxes and radio buttons still needed
|
57
|
+
* Required elements do not yet work
|
58
|
+
* Use Form Object design pattern (for Active Model validations)
|
51
59
|
* Internationalization needed
|
52
60
|
* Create an install generator, which copies the migrations and view files
|
53
61
|
|
62
|
+
Further updates will be available in may.
|
63
|
+
|
64
|
+
|
54
65
|
## License
|
55
66
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
@@ -2,12 +2,16 @@ module Spina
|
|
2
2
|
module Admin
|
3
3
|
class ContactFormElementsController < AdminController
|
4
4
|
layout 'spina/admin/admin'
|
5
|
+
before_action :set_element, only: [:edit, :update, :destroy]
|
5
6
|
|
6
7
|
def error
|
7
8
|
end
|
8
9
|
|
9
10
|
def create
|
10
11
|
@contact_form_element = ContactFormElement.new(contact_form_element_params)
|
12
|
+
@contact_form_element.theme = current_theme.name
|
13
|
+
@contact_form_element.position = Time.now.to_i
|
14
|
+
|
11
15
|
respond_to do |format|
|
12
16
|
if @contact_form_element.save
|
13
17
|
format.html {redirect_to admin_contact_forms_path, notice: 'Form Element was successfully created.'}
|
@@ -18,10 +22,24 @@ module Spina
|
|
18
22
|
end
|
19
23
|
end
|
20
24
|
|
25
|
+
def sort
|
26
|
+
params[:list].each_pair do |parent_pos, parent_node|
|
27
|
+
ContactFormElement.find(parent_node[:id]).update(position: parent_pos)
|
28
|
+
end
|
29
|
+
head :ok
|
30
|
+
end
|
31
|
+
|
21
32
|
def update
|
33
|
+
if @contact_form_element.update_attributes(contact_form_element_params)
|
34
|
+
redirect_to admin_contact_forms_path, notice: 'Form element updated.'
|
35
|
+
else
|
36
|
+
render :error
|
37
|
+
end
|
22
38
|
end
|
23
39
|
|
24
40
|
def destroy
|
41
|
+
@contact_form_element.destroy
|
42
|
+
redirect_to admin_contact_forms_path, notice: 'Form element deleted.'
|
25
43
|
end
|
26
44
|
|
27
45
|
private
|
@@ -30,6 +48,10 @@ module Spina
|
|
30
48
|
params.require(:contact_form_element).permit(:label, :required, :input_type)
|
31
49
|
end
|
32
50
|
|
51
|
+
def set_element
|
52
|
+
@contact_form_element = ContactFormElement.find(params[:id])
|
53
|
+
end
|
54
|
+
|
33
55
|
end
|
34
56
|
end
|
35
57
|
end
|
@@ -7,13 +7,13 @@ module Spina
|
|
7
7
|
|
8
8
|
def index
|
9
9
|
@contact_form_element = ContactFormElement.new
|
10
|
-
@contact_form_elements = ContactFormElement.
|
10
|
+
@contact_form_elements = ContactFormElement.by_theme(current_theme)
|
11
11
|
end
|
12
12
|
|
13
13
|
private
|
14
14
|
|
15
15
|
def set_breadcrumb
|
16
|
-
add_breadcrumb t('
|
16
|
+
add_breadcrumb t('contact_form.menu_title'), admin_contact_forms_path
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module SpinaContactForms
|
2
2
|
module ContactFormsHelper
|
3
3
|
def spina_contact_form
|
4
|
-
render :partial => 'spina/contact_forms/page'
|
4
|
+
render :partial => 'spina/contact_forms/page'
|
5
5
|
end
|
6
6
|
|
7
7
|
def spina_contact_form_input(name, type)
|
@@ -1,4 +1,7 @@
|
|
1
|
-
%
|
2
|
-
%
|
3
|
-
|
4
|
-
|
1
|
+
%li.dd-item{data: {id: element.id}}
|
2
|
+
%div.dd-item-inner
|
3
|
+
= link_to element.label, edit_admin_contact_form_element_path(element), remote: true, class: 'button button-link button-small sortable-link'
|
4
|
+
%span.pull-right
|
5
|
+
= link_to spina.admin_contact_form_element_path(element), method: :delete, data: {confirm: t('spina.delete_confirmation', subject: element.label)}, class: 'button button-small button-link button-danger dd-nodrag' do
|
6
|
+
= icon('cross')
|
7
|
+
= t('spina.delete')
|
@@ -0,0 +1,24 @@
|
|
1
|
+
.modal
|
2
|
+
= form_for [spina, :admin, @contact_form_element], url: spina.admin_contact_form_element_path do |f|
|
3
|
+
%header
|
4
|
+
= link_to '#', data: {dismiss: 'modal'} do
|
5
|
+
= icon('cross')
|
6
|
+
|
7
|
+
%h3
|
8
|
+
Contact Form Element
|
9
|
+
|
10
|
+
%section
|
11
|
+
.form-label Form Label
|
12
|
+
.form-control= f.text_field :label, placeholder: 'Form Label'
|
13
|
+
.form-label Required?
|
14
|
+
.form-control= f.check_box :required, data: {switch: 'true'}
|
15
|
+
.form-label Form Type
|
16
|
+
.form-control
|
17
|
+
.select-dropdown
|
18
|
+
= f.collection_select :input_type, Spina::ContactFormElement.input_types.map{ |el| [el.first, el.first.humanize] }, :first, :second
|
19
|
+
|
20
|
+
%footer
|
21
|
+
= link_to t('spina.cancel'), '#', data: {dismiss: 'modal'}
|
22
|
+
%button.primary{type: 'submit'}
|
23
|
+
= icon('check')
|
24
|
+
=t 'spina.save'
|
@@ -1,2 +1,2 @@
|
|
1
|
-
$('#
|
1
|
+
$('#form_elements_list ol.dd-list').append("<%= j render 'spina/admin/contact_form_elements/contact_form_element', element: @contact_form_element %>");
|
2
2
|
$('#contact_form_element_label').val('')
|
@@ -1,17 +1,14 @@
|
|
1
1
|
%header#header
|
2
2
|
= render partial: 'spina/admin/shared/breadcrumbs'
|
3
|
+
#header_actions
|
4
|
+
= link_to '#form_elements_list', class: 'button sort-switch', data: {change_order: t('spina.pages.change_order'), done_changing_order: t('spina.pages.done_changing_order')} do
|
5
|
+
= icon('random')
|
6
|
+
= t('spina.pages.change_order')
|
3
7
|
|
4
8
|
= render 'form'
|
5
9
|
|
6
10
|
.well
|
7
|
-
.
|
8
|
-
%
|
9
|
-
|
10
|
-
|
11
|
-
%th Element Label
|
12
|
-
%th Element Type
|
13
|
-
%th Required Field?
|
14
|
-
|
15
|
-
%tbody#contact_form_elements
|
16
|
-
- @contact_form_elements.each do |element|
|
17
|
-
= render 'spina/admin/contact_form_elements/contact_form_element', element: element
|
11
|
+
.dd#form_elements_list{data: {:"sort-url" => spina.sort_admin_contact_form_elements_url }}
|
12
|
+
%ol.dd-list
|
13
|
+
- @contact_form_elements.sorted.each do |element|
|
14
|
+
= render 'spina/admin/contact_form_elements/contact_form_element', element: element
|
@@ -1,5 +1,6 @@
|
|
1
|
+
- @contact_form_elements = Spina::ContactFormElement.by_theme(current_theme)
|
1
2
|
= form_tag contact_forms_path, remote: true, id: 'spina_contact_form' do
|
2
|
-
- contact_form_elements.each do |element|
|
3
|
+
- @contact_form_elements.each do |element|
|
3
4
|
%label
|
4
5
|
- if element.required?
|
5
6
|
*
|
data/config/routes.rb
CHANGED
@@ -2,9 +2,11 @@ Spina::Engine.routes.draw do
|
|
2
2
|
|
3
3
|
namespace :admin, path: Spina.config.backend_path do
|
4
4
|
resources :contact_forms, only: [:index]
|
5
|
-
resources :contact_form_elements, except: [:show, :index]
|
5
|
+
resources :contact_form_elements, except: [:show, :index] do
|
6
|
+
post :sort, on: :collection
|
7
|
+
end
|
6
8
|
end
|
7
9
|
|
8
10
|
resources :contact_forms, only: [:create]
|
9
|
-
|
11
|
+
|
10
12
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spina_contact_forms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Cooper
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -74,7 +74,9 @@ files:
|
|
74
74
|
- app/views/layouts/mailers/spina_contact_form.html.erb
|
75
75
|
- app/views/layouts/mailers/spina_contact_form.text.erb
|
76
76
|
- app/views/spina/admin/contact_form_elements/_contact_form_element.html.haml
|
77
|
+
- app/views/spina/admin/contact_form_elements/_edit.html.haml
|
77
78
|
- app/views/spina/admin/contact_form_elements/create.js.erb
|
79
|
+
- app/views/spina/admin/contact_form_elements/edit.js.erb
|
78
80
|
- app/views/spina/admin/contact_form_elements/error.js.erb
|
79
81
|
- app/views/spina/admin/contact_forms/_form.html.haml
|
80
82
|
- app/views/spina/admin/contact_forms/index.html.haml
|
@@ -87,6 +89,7 @@ files:
|
|
87
89
|
- config/locales/contact_form_en.yml
|
88
90
|
- config/routes.rb
|
89
91
|
- db/migrate/20170329144025_create_spina_contact_form_elements.rb
|
92
|
+
- db/migrate/20170330144159_add_position_and_theme_to_spina_contact_form_elements.rb
|
90
93
|
- lib/spina_contact_forms.rb
|
91
94
|
- lib/spina_contact_forms/engine.rb
|
92
95
|
- lib/spina_contact_forms/version.rb
|