alchemy-ajax-form 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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>
|