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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f1349d1e202d955743c148ee0c82cc8b9f5ae0b
4
- data.tar.gz: ce2432d39ea2ecd04e1316d42fbfe2fbfc7f2b2f
3
+ metadata.gz: 0735f4ef9000365307672d78fb2e761562acb6c3
4
+ data.tar.gz: 6541805eec2626a587459b44e2359c05e6a55987
5
5
  SHA512:
6
- metadata.gz: 4d7668715f34a4646794e45fc2508be1b7b30d22cf23d69566f64f20db636f5edda907a976ae7e1eeb3444e83b515c36d1ddd00439665b72a2529f50f7db1f92
7
- data.tar.gz: 8f75f456f1badf4627f660055294313492b5fec0fb29a8b4db598df1fb4106fc31a46a995ea8cf3a4aa2f854c0a907ed11f14642292ad4f4a96a3a84d1de57b0
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
@@ -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
@@ -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.1
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