alchemy-ajax-form 1.0.0
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +310 -0
- data/Rakefile +36 -0
- data/app/assets/config/alchemy_ajax_form_manifest.js +3 -0
- data/app/assets/images/ajax_form.png +0 -0
- data/app/assets/images/alchemy/ajax_form.png +0 -0
- data/app/assets/javascripts/ajax_forms.js.erb +185 -0
- data/app/controllers/alchemy/admin/ajax_forms_controller.rb +53 -0
- data/app/controllers/alchemy/ajax_forms_controller.rb +34 -0
- data/app/mailers/alchemy/ajax_forms_mailer.rb +42 -0
- data/app/models/alchemy/ajax_form.rb +68 -0
- data/app/models/alchemy/ajax_form_ability.rb +22 -0
- data/app/views/alchemy/admin/ajax_forms/_table.html.erb +22 -0
- data/app/views/alchemy/ajax_forms/create.json.jbuilder +6 -0
- data/app/views/alchemy/ajax_forms_mailer/mjml_notify_message.mjml.erb +1 -0
- data/app/views/alchemy/ajax_forms_mailer/mjml_notify_user_message.mjml.erb +1 -0
- data/app/views/alchemy/ajax_forms_mailer/notify_message.html.erb +1 -0
- data/app/views/alchemy/ajax_forms_mailer/notify_user_message.html.erb +1 -0
- data/app/views/layouts/alchemy/base_mailer.html.erb +323 -0
- data/app/views/layouts/alchemy/mjml_base_mailer.mjml +23 -0
- data/config/initializer/assets.rb +1 -0
- data/config/locales/it.yml +56 -0
- data/config/routes.rb +4 -0
- data/lib/alchemy/ajax/form.rb +18 -0
- data/lib/alchemy/ajax/form/engine.rb +21 -0
- data/lib/alchemy/ajax/form/version.rb +7 -0
- data/lib/alchemy/ajax_form_resource.rb +45 -0
- data/lib/generators/custom_form/USAGE +8 -0
- data/lib/generators/custom_form/custom_form_generator.rb +191 -0
- data/lib/generators/custom_form/templates/app/controllers/admin/generic_controller.rb.tt +3 -0
- data/lib/generators/custom_form/templates/app/controllers/generic_controller.rb.tt +3 -0
- data/lib/generators/custom_form/templates/app/lib/generic_resource.rb.tt +4 -0
- data/lib/generators/custom_form/templates/app/model/generic_ability.rb.tt +18 -0
- data/lib/generators/custom_form/templates/app/model/generic_form.rb.tt +15 -0
- data/lib/generators/custom_form/templates/app/views/alchemy/ajax_forms_mailer/_generic_form.html.erb.tt +38 -0
- data/lib/generators/custom_form/templates/app/views/alchemy/ajax_forms_mailer/_generic_user_form.html.erb.tt +39 -0
- data/lib/generators/custom_form/templates/app/views/alchemy/elements/_generic_ajax_form_view.html.erb.tt +50 -0
- data/lib/generators/custom_form/templates/config/initializers/alchemy_ajax_forms.rb.tt +26 -0
- data/lib/generators/custom_form/templates/db/migrate/generic_migration.rb.tt +12 -0
- data/lib/tasks/alchemy/ajax/form_tasks.rake +4 -0
- metadata +182 -0
@@ -0,0 +1,53 @@
|
|
1
|
+
module Alchemy
|
2
|
+
module Admin
|
3
|
+
class AjaxFormsController < ResourcesController
|
4
|
+
|
5
|
+
def resource_handler
|
6
|
+
@_resource_handler ||= "::#{controller_name.classify}Resource".constantize.new(controller_path, alchemy_module)
|
7
|
+
end
|
8
|
+
|
9
|
+
def index
|
10
|
+
@query = resource_handler.model.ransack(search_filter_params[:q])
|
11
|
+
items = @query.result
|
12
|
+
items = items.order(created_at: :desc)
|
13
|
+
|
14
|
+
if contains_relations?
|
15
|
+
items = items.includes(*resource_relations_names)
|
16
|
+
end
|
17
|
+
|
18
|
+
if search_filter_params[:tagged_with].present?
|
19
|
+
items = items.tagged_with(search_filter_params[:tagged_with])
|
20
|
+
end
|
21
|
+
|
22
|
+
if search_filter_params[:filter].present?
|
23
|
+
items = items.public_send(sanitized_filter_params)
|
24
|
+
end
|
25
|
+
|
26
|
+
respond_to do |format|
|
27
|
+
format.html {
|
28
|
+
items = items.page(params[:page] || 1).per(per_page_value_for_screen_size)
|
29
|
+
instance_variable_set("@#{resource_handler.resources_name}", items)
|
30
|
+
}
|
31
|
+
format.csv {
|
32
|
+
instance_variable_set("@#{resource_handler.resources_name}", items)
|
33
|
+
}
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
protected
|
38
|
+
|
39
|
+
def common_search_filter_includes
|
40
|
+
[
|
41
|
+
# contrary to Rails' documentation passing an empty hash to permit all keys does not work
|
42
|
+
{options: options_from_params.keys},
|
43
|
+
{q: [resource_handler.search_field_name, :s]},
|
44
|
+
:tagged_with,
|
45
|
+
:filter,
|
46
|
+
:page
|
47
|
+
].freeze
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Alchemy
|
2
|
+
class AjaxFormsController < Alchemy::BaseController
|
3
|
+
|
4
|
+
|
5
|
+
def create
|
6
|
+
@object = base_class.new permitted_resource_attributes
|
7
|
+
if verify_recaptcha(model: @object) && @object.valid?
|
8
|
+
#registro dati, invio email
|
9
|
+
unless @object.send_only?
|
10
|
+
@object.save
|
11
|
+
end
|
12
|
+
@object.mail_deliver
|
13
|
+
|
14
|
+
render formats: :json
|
15
|
+
else
|
16
|
+
render formats: :json, status: :not_acceptable
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
|
24
|
+
def permitted_resource_attributes
|
25
|
+
params.require(base_class.to_s.demodulize.underscore).permit!
|
26
|
+
end
|
27
|
+
|
28
|
+
def base_class
|
29
|
+
controller_name.classify.constantize
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Alchemy
|
2
|
+
class AjaxFormsMailer < ApplicationMailer
|
3
|
+
|
4
|
+
if Alchemy::Ajax::Form.enable_mjml
|
5
|
+
layout "alchemy/mjml_base_mailer"
|
6
|
+
else
|
7
|
+
layout "alchemy/base_mailer"
|
8
|
+
end
|
9
|
+
|
10
|
+
|
11
|
+
include Alchemy::ConfigurationMethods
|
12
|
+
add_template_helper(Alchemy::PagesHelper)
|
13
|
+
|
14
|
+
|
15
|
+
def notify_message(r)
|
16
|
+
@rec = r
|
17
|
+
reply_to = @rec.email if @rec.respond_to? :email
|
18
|
+
if Alchemy::Ajax::Form.enable_mjml
|
19
|
+
mail(from: Alchemy::EMAIL_NOTIFY_FROM, to: r.emails_recipient, subject: r.notify_subject, reply_to: reply_to) do |format|
|
20
|
+
format.mjml { render "mjml_notify_message", locals: {recipient: @rec} }
|
21
|
+
end
|
22
|
+
else
|
23
|
+
mail(from: Alchemy::EMAIL_NOTIFY_FROM, to: r.emails_recipient, subject: r.notify_subject, reply_to: reply_to)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def notify_message_user(r)
|
28
|
+
@rec = r
|
29
|
+
if Alchemy::Ajax::Form.enable_mjml
|
30
|
+
mail(to: @rec.email, from: Alchemy::EMAIL_NOTIFY_FROM, subject: @rec.notify_user_subject) do |format|
|
31
|
+
format.mjml { render "mjml_notify_user_message", locals: {recipient: @rec} }
|
32
|
+
end
|
33
|
+
else
|
34
|
+
mail(to: @rec.email, from: Alchemy::EMAIL_NOTIFY_FROM, subject: @rec.notify_user_subject) do |format|
|
35
|
+
format.html {render "notify_user_message"}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module Alchemy
|
2
|
+
class AjaxForm < ApplicationRecord
|
3
|
+
|
4
|
+
self.abstract_class = true
|
5
|
+
|
6
|
+
belongs_to :language, class_name: "Alchemy::Language", optional: true, required: false
|
7
|
+
|
8
|
+
def site
|
9
|
+
language.try(:site)
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
def notify_subject
|
14
|
+
I18n.translate(:default_notification_subject, scope: [:ajax_form_mailer, :subjects])
|
15
|
+
end
|
16
|
+
|
17
|
+
def notify_user_subject
|
18
|
+
I18n.translate(:default_notification_user_subject, scope: [:ajax_form_mailer, :subjects])
|
19
|
+
end
|
20
|
+
|
21
|
+
validates :email, :presence => {allow_blank: false}, if: -> {respond_to? :email}
|
22
|
+
validates_format_of :email, :with => /\A([-a-z0-9!\#$%&'*+\/=?^_`{|}~]+\.)*[-a-z0-9!\#$%&'*+\/=?^_`{|}~]+@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i,
|
23
|
+
if: -> {respond_to? :email and !self.email.blank?}
|
24
|
+
|
25
|
+
#with alchemy element can retrieve settings of form (ex. recipient_notification)
|
26
|
+
attr_accessor :alcm_element
|
27
|
+
|
28
|
+
before_save -> {self.language = Alchemy::Language.current}
|
29
|
+
|
30
|
+
def send_only?
|
31
|
+
element_alchemy.content_by_name(:send_only).essence.value
|
32
|
+
rescue
|
33
|
+
false
|
34
|
+
end
|
35
|
+
|
36
|
+
def send_to_staff?
|
37
|
+
element_alchemy.content_by_name(:send_staff).essence.value
|
38
|
+
rescue
|
39
|
+
false
|
40
|
+
end
|
41
|
+
|
42
|
+
def send_to_user?
|
43
|
+
element_alchemy.content_by_name(:send_user).essence.value and respond_to? :email
|
44
|
+
rescue
|
45
|
+
false
|
46
|
+
end
|
47
|
+
|
48
|
+
def mail_deliver
|
49
|
+
if send_to_staff?
|
50
|
+
AjaxFormsMailer.notify_message(self).deliver_now
|
51
|
+
end
|
52
|
+
if send_to_user?
|
53
|
+
AjaxFormsMailer.notify_message_user(self).deliver_now
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def element_alchemy
|
58
|
+
Alchemy::Element.find(self.alcm_element)
|
59
|
+
end
|
60
|
+
|
61
|
+
def emails_recipient
|
62
|
+
element_alchemy.content_by_name(:recipient_notification).essence.body
|
63
|
+
rescue
|
64
|
+
Alchemy::EMAIL_NOTIFY
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Alchemy
|
2
|
+
class AjaxFormAbility
|
3
|
+
include CanCan::Ability
|
4
|
+
|
5
|
+
def initialize(user)
|
6
|
+
|
7
|
+
if user.present? && user.is_admin?
|
8
|
+
# can :manage, ::UserSiteRegistration
|
9
|
+
# can :manage, :admin_user_site_registrations
|
10
|
+
|
11
|
+
can :manage, AjaxForm
|
12
|
+
cannot :create, AjaxForm
|
13
|
+
cannot :update, AjaxForm
|
14
|
+
can :manage, :admin_ahjax_forms
|
15
|
+
cannot :create, :admin_ajax_forms
|
16
|
+
cannot :update, :admin_ajax_forms
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<% if resources_instance_variable.any? %>
|
2
|
+
<table class="list" id="<%= resource_handler.resources_name %>_list">
|
3
|
+
<thead>
|
4
|
+
<tr>
|
5
|
+
<% resource_handler.attributes.each do |attribute| %>
|
6
|
+
<th class="<%= attribute[:type] %> <%= attribute[:name] %>">
|
7
|
+
<%= resource_handler.model.human_attribute_name(attribute[:name]) %>
|
8
|
+
|
9
|
+
</th>
|
10
|
+
<% end %>
|
11
|
+
<th class="tools"></th>
|
12
|
+
</tr>
|
13
|
+
</thead>
|
14
|
+
<tbody>
|
15
|
+
<%= render_resources %>
|
16
|
+
</tbody>
|
17
|
+
</table>
|
18
|
+
<% elsif search_filter_params[:q].present? %>
|
19
|
+
<p><%= Alchemy.t('Nothing found') %></p>
|
20
|
+
<% end %>
|
21
|
+
|
22
|
+
<%= paginate resources_instance_variable, scope: resource_url_proxy, theme: 'alchemy' %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render partial: @rec.class.name.underscore, formats: [:html], locals: { rec: @rec } %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render partial: "#{@rec.class.name.underscore}_user", formats: [:html], locals: { rec: @rec } %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render partial: @rec.class.name.underscore, locals: { rec: @rec } %>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render partial: "#{@rec.class.name.underscore}_user", locals: { rec: @rec } %>
|
@@ -0,0 +1,323 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2
|
+
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml">
|
4
|
+
<head>
|
5
|
+
<!--[if gte mso 9]><xml><o:OfficeDocumentSettings><o:AllowPNG/><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml><![endif]-->
|
6
|
+
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
|
7
|
+
<meta content="width=device-width" name="viewport"/>
|
8
|
+
<!--[if !mso]><!-->
|
9
|
+
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
|
10
|
+
<!--<![endif]-->
|
11
|
+
<title></title>
|
12
|
+
<!--[if !mso]><!-->
|
13
|
+
<link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet" type="text/css"/>
|
14
|
+
<!--<![endif]-->
|
15
|
+
<style type="text/css">
|
16
|
+
body {
|
17
|
+
margin: 0;
|
18
|
+
padding: 0;
|
19
|
+
}
|
20
|
+
|
21
|
+
table,
|
22
|
+
td,
|
23
|
+
tr {
|
24
|
+
vertical-align: top;
|
25
|
+
border-collapse: collapse;
|
26
|
+
}
|
27
|
+
|
28
|
+
* {
|
29
|
+
line-height: inherit;
|
30
|
+
}
|
31
|
+
|
32
|
+
a[x-apple-data-detectors=true] {
|
33
|
+
color: inherit !important;
|
34
|
+
text-decoration: none !important;
|
35
|
+
}
|
36
|
+
</style>
|
37
|
+
<style id="media-query" type="text/css">
|
38
|
+
@media (max-width: 620px) {
|
39
|
+
|
40
|
+
.block-grid,
|
41
|
+
.col {
|
42
|
+
min-width: 320px !important;
|
43
|
+
max-width: 100% !important;
|
44
|
+
display: block !important;
|
45
|
+
}
|
46
|
+
|
47
|
+
.block-grid {
|
48
|
+
width: 100% !important;
|
49
|
+
}
|
50
|
+
|
51
|
+
.col {
|
52
|
+
width: 100% !important;
|
53
|
+
}
|
54
|
+
|
55
|
+
.col>div {
|
56
|
+
margin: 0 auto;
|
57
|
+
}
|
58
|
+
|
59
|
+
img.fullwidth,
|
60
|
+
img.fullwidthOnMobile {
|
61
|
+
max-width: 100% !important;
|
62
|
+
}
|
63
|
+
|
64
|
+
.no-stack .col {
|
65
|
+
min-width: 0 !important;
|
66
|
+
display: table-cell !important;
|
67
|
+
}
|
68
|
+
|
69
|
+
.no-stack.two-up .col {
|
70
|
+
width: 50% !important;
|
71
|
+
}
|
72
|
+
|
73
|
+
.no-stack .col.num4 {
|
74
|
+
width: 33% !important;
|
75
|
+
}
|
76
|
+
|
77
|
+
.no-stack .col.num8 {
|
78
|
+
width: 66% !important;
|
79
|
+
}
|
80
|
+
|
81
|
+
.no-stack .col.num4 {
|
82
|
+
width: 33% !important;
|
83
|
+
}
|
84
|
+
|
85
|
+
.no-stack .col.num3 {
|
86
|
+
width: 25% !important;
|
87
|
+
}
|
88
|
+
|
89
|
+
.no-stack .col.num6 {
|
90
|
+
width: 50% !important;
|
91
|
+
}
|
92
|
+
|
93
|
+
.no-stack .col.num9 {
|
94
|
+
width: 75% !important;
|
95
|
+
}
|
96
|
+
|
97
|
+
.video-block {
|
98
|
+
max-width: none !important;
|
99
|
+
}
|
100
|
+
|
101
|
+
.mobile_hide {
|
102
|
+
min-height: 0px;
|
103
|
+
max-height: 0px;
|
104
|
+
max-width: 0px;
|
105
|
+
display: none;
|
106
|
+
overflow: hidden;
|
107
|
+
font-size: 0px;
|
108
|
+
}
|
109
|
+
|
110
|
+
.desktop_hide {
|
111
|
+
display: block !important;
|
112
|
+
max-height: none !important;
|
113
|
+
}
|
114
|
+
}
|
115
|
+
</style>
|
116
|
+
</head>
|
117
|
+
<body class="clean-body" style="margin: 0; padding: 0; -webkit-text-size-adjust: 100%; background-color: #f3f3f3;">
|
118
|
+
<!--[if IE]><div class="ie-browser"><![endif]-->
|
119
|
+
<table bgcolor="#f3f3f3" cellpadding="0" cellspacing="0" class="nl-container" role="presentation" style="table-layout: fixed; vertical-align: top; min-width: 320px; Margin: 0 auto; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; background-color: #f3f3f3; width: 100%;" valign="top" width="100%">
|
120
|
+
<tbody>
|
121
|
+
<tr style="vertical-align: top;" valign="top">
|
122
|
+
<td style="word-break: break-word; vertical-align: top;" valign="top">
|
123
|
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td align="center" style="background-color:#f3f3f3"><![endif]-->
|
124
|
+
<div style="background-color:transparent;">
|
125
|
+
<div class="block-grid" style="Margin: 0 auto; min-width: 320px; max-width: 600px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; background-color: transparent;">
|
126
|
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;">
|
127
|
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:transparent;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px"><tr class="layout-full-width" style="background-color:transparent"><![endif]-->
|
128
|
+
<!--[if (mso)|(IE)]><td align="center" width="600" style="background-color:transparent;width:600px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:5px; padding-bottom:0px;"><![endif]-->
|
129
|
+
<div class="col num12" style="min-width: 320px; max-width: 600px; display: table-cell; vertical-align: top; width: 600px;">
|
130
|
+
<div style="width:100% !important;">
|
131
|
+
<!--[if (!mso)&(!IE)]><!-->
|
132
|
+
<div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:5px; padding-bottom:0px; padding-right: 0px; padding-left: 0px;">
|
133
|
+
<!--<![endif]-->
|
134
|
+
<div style="font-size:16px;text-align:center;font-family:'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif">
|
135
|
+
<div class="our-class" style="height:25px; background-color: #F27C1D;"> </div>
|
136
|
+
</div>
|
137
|
+
<!--[if (!mso)&(!IE)]><!-->
|
138
|
+
</div>
|
139
|
+
<!--<![endif]-->
|
140
|
+
</div>
|
141
|
+
</div>
|
142
|
+
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
143
|
+
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
144
|
+
</div>
|
145
|
+
</div>
|
146
|
+
</div>
|
147
|
+
<div style="background-color:transparent;">
|
148
|
+
<div class="block-grid" style="Margin: 0 auto; min-width: 320px; max-width: 600px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; background-color: #FFFFFF;">
|
149
|
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color:#FFFFFF;">
|
150
|
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:transparent;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px"><tr class="layout-full-width" style="background-color:#FFFFFF"><![endif]-->
|
151
|
+
<!--[if (mso)|(IE)]><td align="center" width="600" style="background-color:#FFFFFF;width:600px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:5px; padding-bottom:5px;"><![endif]-->
|
152
|
+
<div class="col num12" style="min-width: 320px; max-width: 600px; display: table-cell; vertical-align: top; width: 600px;">
|
153
|
+
<div style="width:100% !important;">
|
154
|
+
<!--[if (!mso)&(!IE)]><!-->
|
155
|
+
<div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 0px; padding-left: 0px;">
|
156
|
+
<!--<![endif]-->
|
157
|
+
<div align="center" class="img-container center" style="padding-right: 0px;padding-left: 0px;">
|
158
|
+
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr style="line-height:0px"><td style="padding-right: 0px;padding-left: 0px;" align="center"><![endif]-->
|
159
|
+
<!-- put here image logo -->
|
160
|
+
<!--[if mso]></td></tr></table><![endif]-->
|
161
|
+
</div>
|
162
|
+
<!--[if (!mso)&(!IE)]><!-->
|
163
|
+
</div>
|
164
|
+
<!--<![endif]-->
|
165
|
+
</div>
|
166
|
+
</div>
|
167
|
+
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
168
|
+
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
169
|
+
</div>
|
170
|
+
</div>
|
171
|
+
</div>
|
172
|
+
<div style="background-color:transparent;">
|
173
|
+
<div class="block-grid" style="Margin: 0 auto; min-width: 320px; max-width: 600px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; background-color: #FFFFFF;">
|
174
|
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color:#FFFFFF;">
|
175
|
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:transparent;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px"><tr class="layout-full-width" style="background-color:#FFFFFF"><![endif]-->
|
176
|
+
<!--[if (mso)|(IE)]><td align="center" width="600" style="background-color:#FFFFFF;width:600px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:0px; padding-bottom:5px;"><![endif]-->
|
177
|
+
<div class="col num12" style="min-width: 320px; max-width: 600px; display: table-cell; vertical-align: top; width: 600px;">
|
178
|
+
<div style="width:100% !important;">
|
179
|
+
<!--[if (!mso)&(!IE)]><!-->
|
180
|
+
<div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:0px; padding-bottom:5px; padding-right: 0px; padding-left: 0px;">
|
181
|
+
<!--<![endif]-->
|
182
|
+
<%= yield %>
|
183
|
+
<table border="0" cellpadding="0" cellspacing="0" class="divider" role="presentation" style="table-layout: fixed; vertical-align: top; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; min-width: 100%; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" valign="top" width="100%">
|
184
|
+
<tbody>
|
185
|
+
<tr style="vertical-align: top;" valign="top">
|
186
|
+
<td class="divider_inner" style="word-break: break-word; vertical-align: top; min-width: 100%; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; padding-top: 30px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px;" valign="top">
|
187
|
+
<table align="center" border="0" cellpadding="0" cellspacing="0" class="divider_content" role="presentation" style="table-layout: fixed; vertical-align: top; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-top: 0px solid transparent; width: 100%;" valign="top" width="100%">
|
188
|
+
<tbody>
|
189
|
+
<tr style="vertical-align: top;" valign="top">
|
190
|
+
<td style="word-break: break-word; vertical-align: top; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" valign="top"><span></span></td>
|
191
|
+
</tr>
|
192
|
+
</tbody>
|
193
|
+
</table>
|
194
|
+
</td>
|
195
|
+
</tr>
|
196
|
+
</tbody>
|
197
|
+
</table>
|
198
|
+
<!--[if (!mso)&(!IE)]><!-->
|
199
|
+
</div>
|
200
|
+
<!--<![endif]-->
|
201
|
+
</div>
|
202
|
+
</div>
|
203
|
+
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
204
|
+
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
205
|
+
</div>
|
206
|
+
</div>
|
207
|
+
</div>
|
208
|
+
<div style="background-color:transparent;">
|
209
|
+
<div class="block-grid three-up" style="Margin: 0 auto; min-width: 320px; max-width: 600px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; background-color: #002543;">
|
210
|
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color:#002543;">
|
211
|
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:transparent;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px"><tr class="layout-full-width" style="background-color:#002543"><![endif]-->
|
212
|
+
<!--[if (mso)|(IE)]><td align="center" width="200" style="background-color:#002543;width:200px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 5px; padding-left: 5px; padding-top:5px; padding-bottom:5px;"><![endif]-->
|
213
|
+
<div class="col num4" style="max-width: 320px; min-width: 200px; display: table-cell; vertical-align: top; width: 200px;">
|
214
|
+
<div style="width:100% !important;">
|
215
|
+
<!--[if (!mso)&(!IE)]><!-->
|
216
|
+
<div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:5px; padding-bottom:5px; padding-right: 5px; padding-left: 5px;">
|
217
|
+
<!--<![endif]-->
|
218
|
+
<table cellpadding="0" cellspacing="0" class="social_icons" role="presentation" style="table-layout: fixed; vertical-align: top; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt;" valign="top" width="100%">
|
219
|
+
<tbody>
|
220
|
+
<tr style="vertical-align: top;" valign="top">
|
221
|
+
<td style="word-break: break-word; vertical-align: top; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px;" valign="top">
|
222
|
+
<table activate="activate" align="center" alignment="alignment" cellpadding="0" cellspacing="0" class="social_table" role="presentation" style="table-layout: fixed; vertical-align: top; border-spacing: 0; border-collapse: undefined; mso-table-tspace: 0; mso-table-rspace: 0; mso-table-bspace: 0; mso-table-lspace: 0;" to="to" valign="top">
|
223
|
+
<tbody>
|
224
|
+
<tr align="center" style="vertical-align: top; display: inline-block; text-align: center;" valign="top">
|
225
|
+
<td style="word-break: break-word; vertical-align: top; padding-bottom: 5px; padding-right: 3px; padding-left: 3px;" valign="top"><!-- put here social 1 --></td>
|
226
|
+
</tr>
|
227
|
+
</tbody>
|
228
|
+
</table>
|
229
|
+
</td>
|
230
|
+
</tr>
|
231
|
+
</tbody>
|
232
|
+
</table>
|
233
|
+
<!--[if (!mso)&(!IE)]><!-->
|
234
|
+
</div>
|
235
|
+
<!--<![endif]-->
|
236
|
+
</div>
|
237
|
+
</div>
|
238
|
+
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
239
|
+
<!--[if (mso)|(IE)]></td><td align="center" width="200" style="background-color:#002543;width:200px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 10px; padding-left: 10px; padding-top:10px; padding-bottom:10px;"><![endif]-->
|
240
|
+
<div class="col num4" style="max-width: 320px; min-width: 200px; display: table-cell; vertical-align: top; width: 200px;">
|
241
|
+
<div style="width:100% !important;">
|
242
|
+
<!--[if (!mso)&(!IE)]><!-->
|
243
|
+
<div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:10px; padding-bottom:10px; padding-right: 10px; padding-left: 10px;">
|
244
|
+
<!--<![endif]-->
|
245
|
+
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 10px; padding-left: 10px; padding-top: 20px; padding-bottom: 20px; font-family: Arial, sans-serif"><![endif]-->
|
246
|
+
<div style="color:#ffffff;font-family:'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;line-height:1.2;padding-top:20px;padding-right:10px;padding-bottom:20px;padding-left:10px;">
|
247
|
+
<div style="font-size: 12px; line-height: 1.2; color: #ffffff; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; mso-line-height-alt: 14px;">
|
248
|
+
<!-- pu here phone number <p style="font-size: 12px; line-height: 1.2; text-align: center; word-break: break-word; mso-line-height-alt: 14px; margin: 0;"><span style="color: #ffffff; font-size: 12px;"><span style="font-size: 12px;">Tel.:</span> +39 . 000 . 000 . 000</span></p> -->
|
249
|
+
</div>
|
250
|
+
</div>
|
251
|
+
<!--[if mso]></td></tr></table><![endif]-->
|
252
|
+
<!--[if (!mso)&(!IE)]><!-->
|
253
|
+
</div>
|
254
|
+
<!--<![endif]-->
|
255
|
+
</div>
|
256
|
+
</div>
|
257
|
+
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
258
|
+
<!--[if (mso)|(IE)]></td><td align="center" width="200" style="background-color:#002543;width:200px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 10px; padding-left: 10px; padding-top:10px; padding-bottom:10px;"><![endif]-->
|
259
|
+
<div class="col num4" style="max-width: 320px; min-width: 200px; display: table-cell; vertical-align: top; width: 200px;">
|
260
|
+
<div style="width:100% !important;">
|
261
|
+
<!--[if (!mso)&(!IE)]><!-->
|
262
|
+
<div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:10px; padding-bottom:10px; padding-right: 10px; padding-left: 10px;">
|
263
|
+
<!--<![endif]-->
|
264
|
+
<!--[if mso]><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 10px; padding-left: 10px; padding-top: 20px; padding-bottom: 20px; font-family: Arial, sans-serif"><![endif]-->
|
265
|
+
<div style="color:#ffffff;font-family:'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;line-height:1.2;padding-top:20px;padding-right:10px;padding-bottom:20px;padding-left:10px;">
|
266
|
+
<div style="font-size: 12px; line-height: 1.2; color: #ffffff; font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; mso-line-height-alt: 14px;">
|
267
|
+
<!-- put here email <p style="font-size: 12px; line-height: 1.2; text-align: center; word-break: break-word; mso-line-height-alt: 14px; margin: 0;">Email: <span style="color: #ffffff; font-size: 12px;">mail@example.com</span></p> -->
|
268
|
+
</div>
|
269
|
+
</div>
|
270
|
+
<!--[if mso]></td></tr></table><![endif]-->
|
271
|
+
<!--[if (!mso)&(!IE)]><!-->
|
272
|
+
</div>
|
273
|
+
<!--<![endif]-->
|
274
|
+
</div>
|
275
|
+
</div>
|
276
|
+
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
277
|
+
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
278
|
+
</div>
|
279
|
+
</div>
|
280
|
+
</div>
|
281
|
+
<div style="background-color:transparent;">
|
282
|
+
<div class="block-grid" style="Margin: 0 auto; min-width: 320px; max-width: 600px; overflow-wrap: break-word; word-wrap: break-word; word-break: break-word; background-color: transparent;">
|
283
|
+
<div style="border-collapse: collapse;display: table;width: 100%;background-color:transparent;">
|
284
|
+
<!--[if (mso)|(IE)]><table width="100%" cellpadding="0" cellspacing="0" border="0" style="background-color:transparent;"><tr><td align="center"><table cellpadding="0" cellspacing="0" border="0" style="width:600px"><tr class="layout-full-width" style="background-color:transparent"><![endif]-->
|
285
|
+
<!--[if (mso)|(IE)]><td align="center" width="600" style="background-color:transparent;width:600px; border-top: 0px solid transparent; border-left: 0px solid transparent; border-bottom: 0px solid transparent; border-right: 0px solid transparent;" valign="top"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td style="padding-right: 0px; padding-left: 0px; padding-top:0px; padding-bottom:5px;"><![endif]-->
|
286
|
+
<div class="col num12" style="min-width: 320px; max-width: 600px; display: table-cell; vertical-align: top; width: 600px;">
|
287
|
+
<div style="width:100% !important;">
|
288
|
+
<!--[if (!mso)&(!IE)]><!-->
|
289
|
+
<div style="border-top:0px solid transparent; border-left:0px solid transparent; border-bottom:0px solid transparent; border-right:0px solid transparent; padding-top:0px; padding-bottom:5px; padding-right: 0px; padding-left: 0px;">
|
290
|
+
<!--<![endif]-->
|
291
|
+
<table border="0" cellpadding="0" cellspacing="0" class="divider" role="presentation" style="table-layout: fixed; vertical-align: top; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; min-width: 100%; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" valign="top" width="100%">
|
292
|
+
<tbody>
|
293
|
+
<tr style="vertical-align: top;" valign="top">
|
294
|
+
<td class="divider_inner" style="word-break: break-word; vertical-align: top; min-width: 100%; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; padding-top: 30px; padding-right: 30px; padding-bottom: 30px; padding-left: 30px;" valign="top">
|
295
|
+
<table align="center" border="0" cellpadding="0" cellspacing="0" class="divider_content" role="presentation" style="table-layout: fixed; vertical-align: top; border-spacing: 0; border-collapse: collapse; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-top: 0px solid transparent; width: 100%;" valign="top" width="100%">
|
296
|
+
<tbody>
|
297
|
+
<tr style="vertical-align: top;" valign="top">
|
298
|
+
<td style="word-break: break-word; vertical-align: top; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%;" valign="top"><span></span></td>
|
299
|
+
</tr>
|
300
|
+
</tbody>
|
301
|
+
</table>
|
302
|
+
</td>
|
303
|
+
</tr>
|
304
|
+
</tbody>
|
305
|
+
</table>
|
306
|
+
<!--[if (!mso)&(!IE)]><!-->
|
307
|
+
</div>
|
308
|
+
<!--<![endif]-->
|
309
|
+
</div>
|
310
|
+
</div>
|
311
|
+
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
312
|
+
<!--[if (mso)|(IE)]></td></tr></table></td></tr></table><![endif]-->
|
313
|
+
</div>
|
314
|
+
</div>
|
315
|
+
</div>
|
316
|
+
<!--[if (mso)|(IE)]></td></tr></table><![endif]-->
|
317
|
+
</td>
|
318
|
+
</tr>
|
319
|
+
</tbody>
|
320
|
+
</table>
|
321
|
+
<!--[if (IE)]></div><![endif]-->
|
322
|
+
</body>
|
323
|
+
</html>
|