bamboolab_contact_form 0.0.1 → 0.0.5
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/lib/bamboolab_contact_form.rb +7 -7
- data/lib/create_conroller.rb +55 -0
- data/lib/create_helper.rb +18 -0
- data/lib/create_mailer.rb +23 -0
- data/lib/create_model.rb +54 -0
- data/lib/create_notice.rb +48 -0
- data/lib/create_view.rb +57 -0
- metadata +7 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0735f4ef9000365307672d78fb2e761562acb6c3
|
4
|
+
data.tar.gz: 6541805eec2626a587459b44e2359c05e6a55987
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b19c8eb4ecb2f93f788571bcf6d78d13ad1e192d9b387cec97cd5deffe51eba4098e010ff1a3646a43c309ea4d1bf7b34aa0587bee73d39b58221dacf58cf6ce
|
7
|
+
data.tar.gz: b407c98ef69b074c599c5ba8e23e3b05b2d098ab2884636f548334c4c81fb24696efd5db3e0622a75451c450532a5f7ebf39b947aa57fde14233ff91ddaebc85
|
@@ -1,10 +1,3 @@
|
|
1
|
-
require 'create_model'
|
2
|
-
require 'create_conroller'
|
3
|
-
require 'create_helper'
|
4
|
-
require 'create_view'
|
5
|
-
require 'create_mailer'
|
6
|
-
require 'create_notice'
|
7
|
-
|
8
1
|
class Bamboolab_contact_form
|
9
2
|
def initialize(name, fields, mailer)
|
10
3
|
@name = name
|
@@ -37,4 +30,11 @@ class Bamboolab_contact_form
|
|
37
30
|
end
|
38
31
|
end
|
39
32
|
|
33
|
+
require_relative 'create_model'
|
34
|
+
require_relative 'create_conroller'
|
35
|
+
require_relative 'create_helper'
|
36
|
+
require_relative 'create_view'
|
37
|
+
require_relative 'create_mailer'
|
38
|
+
require_relative 'create_notice'
|
39
|
+
|
40
40
|
|
@@ -0,0 +1,55 @@
|
|
1
|
+
def create_conroller(name, fields, mailer)
|
2
|
+
|
3
|
+
fields_params = []
|
4
|
+
fields_new_params = "{"
|
5
|
+
email_names = []
|
6
|
+
fields.each do |field|
|
7
|
+
fields_params << "#{field.split(':')[0]}"
|
8
|
+
email_names << "#{field.split(':')[0]}" if field.split(":")[1] == "email_field"
|
9
|
+
fields_new_params << "'#{field.split(':')[0]}' => #{name}_params[:#{field.split(':')[0]}], "
|
10
|
+
end
|
11
|
+
fields_new_params.slice!(-2)
|
12
|
+
fields_new_params << "}"
|
13
|
+
|
14
|
+
remove_email_flash = []
|
15
|
+
email_names.each do |e|
|
16
|
+
remove_email_flash << "new_params['#{e}'] = '' if @#{name}.msg.include? '#{e}'"
|
17
|
+
end
|
18
|
+
|
19
|
+
mailer_line = ""
|
20
|
+
unless mailer == "nil"
|
21
|
+
mailer_line << "#{name.capitalize}Mailer.#{name}_contact(@#{name}).deliver_now"
|
22
|
+
end
|
23
|
+
|
24
|
+
write_controller = "class #{name.capitalize}sController < ApplicationController
|
25
|
+
def send_#{name}
|
26
|
+
@#{name} = #{name.capitalize}.new(#{name}_params)
|
27
|
+
|
28
|
+
if @#{name}.valid
|
29
|
+
flash[:notice] = @#{name}.msg
|
30
|
+
#{mailer_line}
|
31
|
+
redirect_to :back
|
32
|
+
else
|
33
|
+
flash[:notice] = @#{name}.msg
|
34
|
+
if @#{name}.msg.include? 'Format email-a ne valja!'
|
35
|
+
new_params = #{fields_new_params}
|
36
|
+
#{remove_email_flash.join("\n")}
|
37
|
+
flash[:val] = new_params
|
38
|
+
redirect_to :back
|
39
|
+
else
|
40
|
+
flash[:val] = #{name}_params
|
41
|
+
redirect_to :back
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def message_params
|
50
|
+
params.require(:#{name}).permit(:#{fields_params.join(', :')})
|
51
|
+
end
|
52
|
+
end"
|
53
|
+
|
54
|
+
File.open("app/controllers/#{name}s_controller.rb", "w+") {|f| f.write(write_controller) }
|
55
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
def create_helper(name, fields)
|
2
|
+
fields_new_params = "{"
|
3
|
+
fields.each do |field|
|
4
|
+
fields_new_params << "'#{field.split(':')[0]}' => ''], "
|
5
|
+
end
|
6
|
+
fields_new_params.slice!(-2)
|
7
|
+
fields_new_params << "}"
|
8
|
+
|
9
|
+
write_helper = "module #{name.capitalize}sHelper
|
10
|
+
def #{name}_prepare_var
|
11
|
+
@#{name} = #{name.capitalize}.new()
|
12
|
+
@placeholder = flash[:val] || {'name' => '', 'email' => '', 'content' => ''}
|
13
|
+
end
|
14
|
+
end"
|
15
|
+
|
16
|
+
File.open("app/helpers/#{name}s_helper.rb", "w+") {|f| f.write(write_helper) }
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#"[kvesic.mislav@gmail.com, name]"
|
2
|
+
def create_mailer(name, fields, mailer)
|
3
|
+
write_mailer = "class #{name.capitalize}Mailer < ApplicationMailer
|
4
|
+
def #{name}_contact(message)
|
5
|
+
@message = message
|
6
|
+
mail to: '#{mailer[0]}', from: 'no-reply@bamboolab.eu', subject: 'Pitanje od <%= @message.#{mailer[1]} %>'
|
7
|
+
end
|
8
|
+
end"
|
9
|
+
|
10
|
+
File.open("app/mailers/#{name}_mailer.rb", "w+") {|f| f.write(write_mailer) }
|
11
|
+
|
12
|
+
|
13
|
+
message_items = []
|
14
|
+
fields.each do |item|
|
15
|
+
message_items << "<p><%= @message.#{item.split(':')[0]} %></p>"
|
16
|
+
end
|
17
|
+
|
18
|
+
write_mailer_view="<p> Poštovani, </p>
|
19
|
+
#{message_items.join("\n")}
|
20
|
+
"
|
21
|
+
|
22
|
+
File.open("app/views/#{name}_mailer/#{name}_contact.html.erb", "w+") {|f| f.write(write_mailer_view) }
|
23
|
+
end
|
data/lib/create_model.rb
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
def create_model(name, fields)
|
2
|
+
field_names = []
|
3
|
+
field_types = []
|
4
|
+
fields.each do |field|
|
5
|
+
field_names << "#{field.split(":")[0]}"
|
6
|
+
field_types << "#{field.split(":")[1]}"
|
7
|
+
end
|
8
|
+
|
9
|
+
field_vars = []
|
10
|
+
field_emails = []
|
11
|
+
email_names_with_valid = []
|
12
|
+
success_case = "if"
|
13
|
+
field_names.each_with_index do |n, i|
|
14
|
+
field_vars << " @#{n} = @#{name}[:#{n}]"
|
15
|
+
field_emails << " valid_#{n} = @#{name}[:#{n}] =~ /\\A[\\w+\\-.]+@[a-z\\d\\-]+(\\.[a-z\\d\\-]+)*\\.[a-z]+\\z/i #0 if ok, nil if don't" if field_types[i] == "email_field"
|
16
|
+
email_names_with_valid << "valid_#{n}" if field_types[i] == "email_field"
|
17
|
+
success_case << " @#{name}[:#{n}].present?"
|
18
|
+
success_case << " and" unless i == field_names.length - 1
|
19
|
+
end
|
20
|
+
|
21
|
+
emai_format_cases = []
|
22
|
+
email_names_with_valid.each do |e|
|
23
|
+
success_case << " and #{e}"
|
24
|
+
|
25
|
+
emai_format_cases << " elsif !@#{name}[:#{e.slice(6..-1)}].blank? and !#{e}"
|
26
|
+
emai_format_cases << " @msg = 'Format email-a ne valja! Provjerite polje \"#{e.slice(6..-1)}\".'"
|
27
|
+
emai_format_cases << " @valid = false"
|
28
|
+
end
|
29
|
+
|
30
|
+
write_model = "class #{name.capitalize}
|
31
|
+
include ActiveModel::Model""
|
32
|
+
|
33
|
+
attr_accessor :#{field_names.join(", :")}, :valid ,:msg
|
34
|
+
|
35
|
+
def initialize(#{name}=nil)
|
36
|
+
@#{name} = #{name}
|
37
|
+
if @#{name}
|
38
|
+
#{field_vars.join("\n")}
|
39
|
+
|
40
|
+
#{field_emails.join("\n")}
|
41
|
+
|
42
|
+
#{success_case}
|
43
|
+
@msg = 'Uspješno ste poslali poruku.'
|
44
|
+
@valid = true
|
45
|
+
#{emai_format_cases.join("\n")}
|
46
|
+
else
|
47
|
+
@msg = 'Sva polja moraju biti popunjena!'
|
48
|
+
@valid = false
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end"
|
53
|
+
File.open("app/models/#{name}.rb", "w+") {|f| f.write(write_model) }
|
54
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
def create_notice(name, fields, mailer)
|
2
|
+
puts "--------------------------|"
|
3
|
+
puts "| |"
|
4
|
+
puts "| BAMBOOLAB CONTACT FORM |"
|
5
|
+
puts "| |"
|
6
|
+
puts "---------------------------"
|
7
|
+
puts ""
|
8
|
+
puts " ----------------------------------------------------------------------------------------------------"
|
9
|
+
puts "/ Add helper to controller where you want to use the form: /"
|
10
|
+
puts "----------------------------------------------------------------------------------------------------"
|
11
|
+
puts " include #{name.capitalize}sHelper"
|
12
|
+
puts " before_action :message_prepare_var"
|
13
|
+
puts ""
|
14
|
+
|
15
|
+
puts " ----------------------------------------------------------------------------------------------------"
|
16
|
+
puts "/ Add this line to your config/routes file: /"
|
17
|
+
puts "----------------------------------------------------------------------------------------------------"
|
18
|
+
puts " post 'send_#{name}', to: '#{name}s#send_#{name}'"
|
19
|
+
puts ""
|
20
|
+
|
21
|
+
puts " ----------------------------------------------------------------------------------------------------"
|
22
|
+
puts "/ Add this line to your views: /"
|
23
|
+
puts "----------------------------------------------------------------------------------------------------"
|
24
|
+
puts " <%= render '#{name}s/form' %>"
|
25
|
+
puts ""
|
26
|
+
|
27
|
+
puts " ----------------------------------------------------------------------------------------------------"
|
28
|
+
puts "/ Add this code to you config/environments/development.rb and /production.rb with the right :host : /"
|
29
|
+
puts "----------------------------------------------------------------------------------------------------"
|
30
|
+
puts " config.action_mailer.raise_delivery_errors = false"
|
31
|
+
puts " config.action_mailer.default_url_options = { :host => 'youthost.dev.bambooapp.eu' }"
|
32
|
+
puts " config.action_mailer.delivery_method = :smtp"
|
33
|
+
puts " config.action_mailer.smtp_settings = {"
|
34
|
+
puts " address: ENV['SMTP_SERVER'],"
|
35
|
+
puts " openssl_verify_mode: OpenSSL::SSL::VERIFY_NONE,"
|
36
|
+
puts " port: ENV['SMTP_PORT'].to_i,"
|
37
|
+
puts " domain: ENV['MAILER_DOMAIN'],"
|
38
|
+
puts " authentication: 'plain',"
|
39
|
+
puts " enable_starttls_auto: true,"
|
40
|
+
puts " user_name: ENV['SMTP_USER'],"
|
41
|
+
puts " password: ENV['SMTP_PWD']"
|
42
|
+
puts " }"
|
43
|
+
puts ""
|
44
|
+
|
45
|
+
puts " ----------------------------------------------------------------------------------------------------"
|
46
|
+
puts "/ And add your personal sendgrid information to config/environment.rb ! /"
|
47
|
+
puts "----------------------------------------------------------------------------------------------------"
|
48
|
+
end
|
data/lib/create_view.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
def create_view(name, fields)
|
2
|
+
field_divs = []
|
3
|
+
field_js = []
|
4
|
+
field_js_case = []
|
5
|
+
fields.each do |field|
|
6
|
+
field_divs << " <div class='form__field'>"
|
7
|
+
field_divs << " <%= f.label :#{field.split(":")[0]}, '#{field.split(":")[0]}', :class => 'label' %>"
|
8
|
+
|
9
|
+
if field.split(":")[1] == "text_area"
|
10
|
+
field_divs << " <%= f.#{field.split(":")[1]} :#{field.split(":")[0]}, autofocus: true, :class => 'input textarea', value: @placeholder['#{field.split(":")[0]}'] %>"
|
11
|
+
else
|
12
|
+
field_divs << " <%= f.#{field.split(":")[1]} :#{field.split(":")[0]}, autofocus: true, :class => 'input', value: @placeholder['#{field.split(":")[0]}'] %>"
|
13
|
+
end
|
14
|
+
|
15
|
+
field_divs << " </div>"
|
16
|
+
|
17
|
+
field_js << " var #{field.split(":")[0]} = '<%= @placeholder[\"#{field.split(":")[0]}\"] %>';"
|
18
|
+
field_js_case << " if (#{field.split(":")[0]}.length == 0) $('##{name}_#{field.split(":")[0]}').parent().addClass( 'form__field--error' );"
|
19
|
+
end
|
20
|
+
|
21
|
+
write_view = "
|
22
|
+
<%= form_for(@#{name}, :url => send_#{name}_path, html: {class: 'form form--contact'} ) do |f| %>
|
23
|
+
<fieldset class='form__fieldset'>
|
24
|
+
<legend class='legend'>Pošaljite poruku</legend>
|
25
|
+
</fieldset>
|
26
|
+
|
27
|
+
<fieldset class='form__fieldset'>
|
28
|
+
<% if flash[:notice] %>
|
29
|
+
<p> <%= flash[:notice] %> </p>
|
30
|
+
<% end %>
|
31
|
+
</fieldset>
|
32
|
+
|
33
|
+
<fieldset class='form__fieldset'>
|
34
|
+
#{field_divs.join("\n")}
|
35
|
+
</fieldset>
|
36
|
+
|
37
|
+
<fieldset class='form__fieldset'>
|
38
|
+
<%= f.submit 'Pošalji', :class => 'btn btn--full right' %>
|
39
|
+
</fieldset>
|
40
|
+
|
41
|
+
<% end %>
|
42
|
+
<script>
|
43
|
+
$(function() {
|
44
|
+
var val = '<%= flash[:val] %>';
|
45
|
+
|
46
|
+
if (val.length>0) {
|
47
|
+
#{field_js.join("\n")}
|
48
|
+
|
49
|
+
#{field_js_case.join("\n")}
|
50
|
+
}
|
51
|
+
|
52
|
+
});
|
53
|
+
</script>"
|
54
|
+
|
55
|
+
File.open("app/views/#{name}s/_form.html.erb", "w+") {|f| f.write( write_view ) }
|
56
|
+
|
57
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bamboolab_contact_form
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mislav Kvesić
|
@@ -19,6 +19,12 @@ extra_rdoc_files: []
|
|
19
19
|
files:
|
20
20
|
- bin/bamboolab_contact_form
|
21
21
|
- lib/bamboolab_contact_form.rb
|
22
|
+
- lib/create_conroller.rb
|
23
|
+
- lib/create_helper.rb
|
24
|
+
- lib/create_mailer.rb
|
25
|
+
- lib/create_model.rb
|
26
|
+
- lib/create_notice.rb
|
27
|
+
- lib/create_view.rb
|
22
28
|
homepage: http://rubygems.org/gems/bamboolab_contact_form
|
23
29
|
licenses:
|
24
30
|
- Bamboolab
|