mod-build 3.4.26-beta.1 → 3.4.26-beta.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.
- package/gulp-tasks/grab-cdn.js +2 -7
- package/gulp-tasks/templates.js +7 -1
- package/package.json +1 -1
- package/src/data/components/qs-footer.js +48 -0
- package/src/data/components/quote-footer.js +64 -0
- package/src/styles/partials/_qs-footer.scss +68 -0
- package/src/styles/partials/_quote-footer-v1.scss +79 -0
- package/src/styles/partials/_quote-footer-v2.scss +64 -0
- package/src/styles/partials/_quote-footer-v3.scss +65 -0
- package/src/templates/components/qs-footer.html +55 -0
- package/src/templates/components/quote-footer-v1.html +97 -0
- package/src/templates/components/quote-footer-v2.html +117 -0
package/gulp-tasks/grab-cdn.js
CHANGED
|
@@ -32,9 +32,7 @@ module.exports = function(gulp, gulpPlugins, siteSettings, siteData) {
|
|
|
32
32
|
'/templates/modals/privacy/': ['/templates/modals/privacy/', 'index.html'],
|
|
33
33
|
'/templates/modals/terms/': ['/templates/modals/terms/', 'index.html'],
|
|
34
34
|
'/templates/qs-modals/contact-us/': ['/templates/modals/contact-us/', 'index.html'],
|
|
35
|
-
'/templates/scripts/trusted-form.html': ['/templates/scripts/', 'trusted-form.html']
|
|
36
|
-
'/templates/modals/publisher/': ['/templates/modals/publisher/', 'index.html'],
|
|
37
|
-
'/templates/modals/publisher-test/': ['/templates/modals/publisher-test/', 'index.html']
|
|
35
|
+
'/templates/scripts/trusted-form.html': ['/templates/scripts/', 'trusted-form.html']
|
|
38
36
|
};
|
|
39
37
|
|
|
40
38
|
if (includeFaqLink) {
|
|
@@ -50,10 +48,7 @@ module.exports = function(gulp, gulpPlugins, siteSettings, siteData) {
|
|
|
50
48
|
// local dev files
|
|
51
49
|
const remoteFilesForLocalDev = {
|
|
52
50
|
'/scripts/mod-form.js': ['/temp/scripts/', 'mod-form.js'],
|
|
53
|
-
'/scripts/mod-utils.js': ['/temp/scripts/', 'mod-utils.js']
|
|
54
|
-
'/scripts/publisher-form.js': ['/temp/scripts/', 'publisher-form.js'],
|
|
55
|
-
'/scripts/publisher-form-test.js': ['/temp/scripts/', 'publisher-form-test.js'],
|
|
56
|
-
'/styles/publisher-form.css': ['/temp/styles/', 'publisher-form.css']
|
|
51
|
+
'/scripts/mod-utils.js': ['/temp/scripts/', 'mod-utils.js']
|
|
57
52
|
};
|
|
58
53
|
|
|
59
54
|
if (!nodeEnv) {
|
package/gulp-tasks/templates.js
CHANGED
|
@@ -3,10 +3,16 @@ module.exports = function(gulp, gulpPlugins, siteSettings, siteData) {
|
|
|
3
3
|
/* eslint brace-style: 0 */
|
|
4
4
|
const { isLocal, nodeEnv, buildPath } = siteSettings;
|
|
5
5
|
const { isWhiteLabel } = siteData;
|
|
6
|
+
|
|
6
7
|
var commonData = require('../src/data/common.js');
|
|
8
|
+
|
|
7
9
|
var assetsPath = isLocal ? '/temp/assets' : 'https://' + nodeEnv + '/quote/resources/assets';
|
|
8
10
|
assetsPath = isWhiteLabel ? '' : assetsPath;
|
|
9
|
-
|
|
11
|
+
|
|
12
|
+
var qsFooterData = require('../src/data/components/qs-footer.js');
|
|
13
|
+
var quoteFooterData = require('../src/data/components/quote-footer.js');
|
|
14
|
+
|
|
15
|
+
var templatesData = Object.assign(commonData(), qsFooterData(), quoteFooterData(), siteData, { isLocal, nodeEnv, assetsPath, buildPath });
|
|
10
16
|
|
|
11
17
|
// This is helper function to evaluate JS expressions
|
|
12
18
|
// in Handlebars, e.g. for conditions
|
package/package.json
CHANGED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
var qsFooterData = function() {
|
|
2
|
+
var data = {
|
|
3
|
+
qsFooterData: {
|
|
4
|
+
links: [
|
|
5
|
+
{
|
|
6
|
+
name: 'About',
|
|
7
|
+
url: '/about/',
|
|
8
|
+
modal: true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: 'Privacy Notice',
|
|
12
|
+
url: '/privacy/',
|
|
13
|
+
modal: true
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: 'Affiliates',
|
|
17
|
+
url: 'https://modernize.com/contact?publisher',
|
|
18
|
+
modal: false
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: 'Terms of Use',
|
|
22
|
+
url: '/terms/',
|
|
23
|
+
modal: true
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'Contact Us',
|
|
27
|
+
url: '/contact-us/',
|
|
28
|
+
modal: true
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'California - Do not sell my info',
|
|
32
|
+
url: 'https://privacy-central.securiti.ai/#/dsr/983cfd4b-c36a-4601-89e9-b651e5a05708',
|
|
33
|
+
modal: false
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
copyright: 'QuinStreet, Inc. All Rights Reserved.',
|
|
37
|
+
contractor: {
|
|
38
|
+
text: 'Are you a contractor?',
|
|
39
|
+
linkText: 'Join Our Contractor Network',
|
|
40
|
+
link: 'https://modernize.com/pro/register/leads/?trade=bathrooms&utm_campaign=quinstreet-referral'
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
return data;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
module.exports = qsFooterData;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
var quoteFooterData = function() {
|
|
2
|
+
var data = {
|
|
3
|
+
quoteFooterData: {
|
|
4
|
+
copyright: 'All Rights Reserved.',
|
|
5
|
+
contractor: {
|
|
6
|
+
text: 'Are you a contractor?',
|
|
7
|
+
linkText: 'Join Our Contractor Network',
|
|
8
|
+
link: 'https://modernize.com/pro/register/leads/?trade=bathrooms&utm_campaign=quinstreet-referral'
|
|
9
|
+
},
|
|
10
|
+
capchaDisclosure: {
|
|
11
|
+
text: 'This site is protected by reCAPTCHA and the Google',
|
|
12
|
+
privacy: {
|
|
13
|
+
text: 'Privacy Policy',
|
|
14
|
+
url: 'https://policies.google.com/privacy'
|
|
15
|
+
},
|
|
16
|
+
terms: {
|
|
17
|
+
text: 'Terms of Service',
|
|
18
|
+
url: 'https://policies.google.com/terms'
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
privacyLinks: [
|
|
22
|
+
{
|
|
23
|
+
text: 'California Privacy',
|
|
24
|
+
anchor: 'ccpa'
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
text: 'New York Privacy',
|
|
28
|
+
anchor: 'nyna'
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
text: 'Do Not Sell My Personal Information',
|
|
32
|
+
anchor: 'uspi'
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
links: [
|
|
36
|
+
{
|
|
37
|
+
url: 'about',
|
|
38
|
+
text: 'About Us',
|
|
39
|
+
modal: true
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
url: 'terms',
|
|
43
|
+
text: 'Terms of Use',
|
|
44
|
+
modal: true
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
url: 'privacy',
|
|
48
|
+
text: 'Privacy Policy',
|
|
49
|
+
modal: true
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
url: 'https://modernize.com/contact?publisher',
|
|
53
|
+
text: 'I\'m a publisher',
|
|
54
|
+
modal: false,
|
|
55
|
+
target: '_blank'
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
return data;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
module.exports = quoteFooterData;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
@import './contact-us';
|
|
2
|
+
@import './modal-pages';
|
|
3
|
+
|
|
4
|
+
.footer {
|
|
5
|
+
background-color: $color-gray-dark;
|
|
6
|
+
color: $color-white;
|
|
7
|
+
font-family: $font-secondary;
|
|
8
|
+
font-size: 10px;
|
|
9
|
+
font-weight: 500;
|
|
10
|
+
padding: 35px 0;
|
|
11
|
+
text-align: center;
|
|
12
|
+
|
|
13
|
+
&__head-link {
|
|
14
|
+
display: block;
|
|
15
|
+
font-size: 14px;
|
|
16
|
+
margin: 0 auto 20px;
|
|
17
|
+
|
|
18
|
+
a {
|
|
19
|
+
color: $color-white;
|
|
20
|
+
text-decoration: underline;
|
|
21
|
+
|
|
22
|
+
&:active,
|
|
23
|
+
&:hover,
|
|
24
|
+
&:focus {
|
|
25
|
+
color: $color-charcoal3;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&__links {
|
|
31
|
+
display: flex;
|
|
32
|
+
flex-wrap: wrap;
|
|
33
|
+
justify-content: center;
|
|
34
|
+
|
|
35
|
+
a {
|
|
36
|
+
color: $color-white;
|
|
37
|
+
cursor: pointer;
|
|
38
|
+
margin: 0 5px;
|
|
39
|
+
|
|
40
|
+
&:active,
|
|
41
|
+
&:hover,
|
|
42
|
+
&:focus {
|
|
43
|
+
color: $color-charcoal3;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
li + li {
|
|
48
|
+
&::before {
|
|
49
|
+
content: '|';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&__copyright {
|
|
55
|
+
font-weight: 500;
|
|
56
|
+
margin-bottom: 0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
@include breakpoint-sm {
|
|
60
|
+
font-size: 12px;
|
|
61
|
+
|
|
62
|
+
&__links {
|
|
63
|
+
a {
|
|
64
|
+
margin: 0 10px;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
.footer {
|
|
2
|
+
@include font-primary-medium;
|
|
3
|
+
color: $color-charcoal3;
|
|
4
|
+
font-size: 14px;
|
|
5
|
+
line-height: 14px;
|
|
6
|
+
text-align: center;
|
|
7
|
+
|
|
8
|
+
a {
|
|
9
|
+
color: $color-purple5;
|
|
10
|
+
white-space: nowrap;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&__content {
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
padding-bottom: 15px;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&__links {
|
|
19
|
+
margin: 20px 0;
|
|
20
|
+
|
|
21
|
+
a {
|
|
22
|
+
color: $color-blue5;
|
|
23
|
+
|
|
24
|
+
& + a {
|
|
25
|
+
margin-left: 35px;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&__captcha-disclosure {
|
|
31
|
+
margin-top: 5px;
|
|
32
|
+
|
|
33
|
+
a {
|
|
34
|
+
color: $color-blue5;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&__bbb-logo {
|
|
39
|
+
height: 47px;
|
|
40
|
+
margin-top: 20px;
|
|
41
|
+
max-width: 130px;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
& .contractor-link {
|
|
45
|
+
display: block;
|
|
46
|
+
font-size: 14px;
|
|
47
|
+
margin: 20px auto 10px;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@include breakpoint-phone {
|
|
52
|
+
.footer {
|
|
53
|
+
.container {
|
|
54
|
+
max-width: 100%;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
&__copyright {
|
|
58
|
+
margin-top: 20px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
&__links {
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
margin: 5px 0 0;
|
|
65
|
+
|
|
66
|
+
a {
|
|
67
|
+
margin-top: 15px;
|
|
68
|
+
|
|
69
|
+
& + a {
|
|
70
|
+
margin-left: 0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
&__captcha-disclosure {
|
|
76
|
+
margin-top: 15px;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
.footer {
|
|
2
|
+
@include font-primary-medium;
|
|
3
|
+
color: $color-charcoal3;
|
|
4
|
+
font-size: 12px;
|
|
5
|
+
line-height: 14px;
|
|
6
|
+
text-align: center;
|
|
7
|
+
|
|
8
|
+
&__content {
|
|
9
|
+
overflow: hidden;
|
|
10
|
+
padding: 0 0 15px;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&__links {
|
|
14
|
+
margin-top: 10px;
|
|
15
|
+
text-align: center;
|
|
16
|
+
|
|
17
|
+
a {
|
|
18
|
+
@include font-primary-bold;
|
|
19
|
+
color: $color-blue5;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
a + a {
|
|
23
|
+
&::before {
|
|
24
|
+
color: $color-charcoal2;
|
|
25
|
+
content: ' / ';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&__bbb-logo {
|
|
31
|
+
height: 47px;
|
|
32
|
+
margin: 15px auto;
|
|
33
|
+
max-width: 130px;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
& .contractor-link {
|
|
37
|
+
display: block;
|
|
38
|
+
font-size: 14px;
|
|
39
|
+
margin: 20px auto 10px;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
@include breakpoint-phone {
|
|
44
|
+
.footer {
|
|
45
|
+
text-align: center;
|
|
46
|
+
|
|
47
|
+
.container {
|
|
48
|
+
max-width: 100%;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
&__copyright {
|
|
52
|
+
float: none;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
&__captcha-disclosure {
|
|
56
|
+
margin-top: 8px;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
&__links {
|
|
60
|
+
margin-top: 5px;
|
|
61
|
+
text-align: center;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
.footer {
|
|
2
|
+
@include font-primary-medium;
|
|
3
|
+
color: $color-charcoal3;
|
|
4
|
+
font-size: 12px;
|
|
5
|
+
line-height: 14px;
|
|
6
|
+
text-align: center;
|
|
7
|
+
|
|
8
|
+
a {
|
|
9
|
+
color: $color-purple5;
|
|
10
|
+
white-space: nowrap;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&__content {
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
padding: 15px 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
&__links {
|
|
19
|
+
margin-top: 10px;
|
|
20
|
+
text-align: center;
|
|
21
|
+
|
|
22
|
+
a {
|
|
23
|
+
@include font-primary-bold;
|
|
24
|
+
color: $color-blue5;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
a + a {
|
|
28
|
+
&::before {
|
|
29
|
+
color: $color-charcoal3;
|
|
30
|
+
content: ' | ';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
&__bbb {
|
|
36
|
+
height: 47px;
|
|
37
|
+
margin-top: 20px;
|
|
38
|
+
max-width: 130px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
& .contractor-link {
|
|
42
|
+
display: block;
|
|
43
|
+
font-size: 14px;
|
|
44
|
+
margin: 20px auto 10px;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@include breakpoint-phone {
|
|
49
|
+
.footer {
|
|
50
|
+
text-align: center;
|
|
51
|
+
|
|
52
|
+
.container {
|
|
53
|
+
max-width: 100%;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
&__copyright {
|
|
57
|
+
float: none;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
&__links {
|
|
61
|
+
margin-top: 5px;
|
|
62
|
+
text-align: center;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
<footer class="footer">
|
|
2
|
+
<div class="container">
|
|
3
|
+
<div class="footer__head-link">
|
|
4
|
+
{{qsFooterData.contractor.text}}
|
|
5
|
+
<a target="_blank" href="{{qsFooterData.contractor.link}}" rel="noopener noreferrer">
|
|
6
|
+
{{qsFooterData.contractor.linkText}}
|
|
7
|
+
</a>
|
|
8
|
+
</div>
|
|
9
|
+
<ul class="footer__links">
|
|
10
|
+
{{#each qsFooterData.links}}
|
|
11
|
+
<li>
|
|
12
|
+
<a
|
|
13
|
+
{{#xif "!this.modal" }}
|
|
14
|
+
href="{{this.url}}"
|
|
15
|
+
target="_blank"
|
|
16
|
+
rel="noopener noreferrer"
|
|
17
|
+
{{/xif}}
|
|
18
|
+
{{#xif "this.modal" }}
|
|
19
|
+
data-bind="modal-link"
|
|
20
|
+
data-load="/modals{{this.url}}index.html"
|
|
21
|
+
{{/xif}}
|
|
22
|
+
>
|
|
23
|
+
{{this.name}}
|
|
24
|
+
</a>
|
|
25
|
+
</li>
|
|
26
|
+
{{/each}}
|
|
27
|
+
<!--
|
|
28
|
+
- Define the customFooterLinks array of objects in template.js / siteconfig.js
|
|
29
|
+
- e.g customFooterLinks: [{name: 'Test Link', url: '/test/', modal: true}]
|
|
30
|
+
-->
|
|
31
|
+
{{#if this.customFooterLinks}}
|
|
32
|
+
{{#each this.customFooterLinks}}
|
|
33
|
+
<li>
|
|
34
|
+
<a
|
|
35
|
+
{{#xif "!this.modal" }}
|
|
36
|
+
href="{{this.url}}"
|
|
37
|
+
target="_blank"
|
|
38
|
+
rel="noopener noreferrer"
|
|
39
|
+
{{/xif}}
|
|
40
|
+
{{#xif "this.modal" }}
|
|
41
|
+
data-bind="modal-link"
|
|
42
|
+
data-load="/modals{{this.url}}index.html"
|
|
43
|
+
{{/xif}}
|
|
44
|
+
>
|
|
45
|
+
{{this.name}}
|
|
46
|
+
</a>
|
|
47
|
+
</li>
|
|
48
|
+
{{/each}}
|
|
49
|
+
{{/if}}
|
|
50
|
+
</ul>
|
|
51
|
+
<p class="footer__copyright">
|
|
52
|
+
Copyright © {{year}} {{qsFooterData.copyright}}
|
|
53
|
+
</p>
|
|
54
|
+
</div>
|
|
55
|
+
</footer>
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<div class="footer">
|
|
2
|
+
<div class="container">
|
|
3
|
+
<img src="{{assetsPath}}/images/logos/misc/bbb.svg" alt="BBB Accredited Logo" class="footer__bbb-logo footer__bbb">
|
|
4
|
+
<div class="footer__links contractor-link">
|
|
5
|
+
{{quoteFooterData.contractor.text}}
|
|
6
|
+
<a target="_blank" href="{{quoteFooterData.contractor.link}}" rel="noopener noreferrer">
|
|
7
|
+
{{quoteFooterData.contractor.linkText}}
|
|
8
|
+
</a>
|
|
9
|
+
</div>
|
|
10
|
+
<div class="footer__content">
|
|
11
|
+
{{#xif 'this.copyright === "top"'}}
|
|
12
|
+
<div class="footer__copyright">
|
|
13
|
+
© Copyright {{year}} {{website_name}}.
|
|
14
|
+
{{{quoteFooterData.copyright}}}
|
|
15
|
+
<div class="footer__captcha-disclosure">
|
|
16
|
+
{{quoteFooterData.capchaDisclosure.text}}
|
|
17
|
+
<a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
|
|
18
|
+
<a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a> apply.
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
{{/xif}}
|
|
22
|
+
{{#xif "this.privacylinks === 'top'"}}
|
|
23
|
+
<div class="footer__links">
|
|
24
|
+
{{#each quoteFooterData.privacyLinks}}
|
|
25
|
+
<a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">{{{this.text}}}</a>
|
|
26
|
+
{{/each}}
|
|
27
|
+
<!--
|
|
28
|
+
- Define the customPrivacyLinks array of objects in template.js / siteconfig.js
|
|
29
|
+
- e.g customPrivacyLinks: [{ text: 'This is a custom link', anchor: 'ccpa' }]
|
|
30
|
+
-->
|
|
31
|
+
{{#if this.customPrivacyLinks}}
|
|
32
|
+
{{#each this.customPrivacyLinks}}
|
|
33
|
+
<a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">{{{this.text}}}</a>
|
|
34
|
+
{{/each}}
|
|
35
|
+
{{/if}}
|
|
36
|
+
</div>
|
|
37
|
+
{{/xif}}
|
|
38
|
+
{{#xif 'this.copyright === "middle"'}}
|
|
39
|
+
<div class="footer__copyright">
|
|
40
|
+
© Copyright {{year}} {{website_name}}.
|
|
41
|
+
{{{quoteFooterData.copyright}}}
|
|
42
|
+
<div class="footer__captcha-disclosure">
|
|
43
|
+
{{quoteFooterData.capchaDisclosure.text}}
|
|
44
|
+
<a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
|
|
45
|
+
<a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a> apply.
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
{{/xif}}
|
|
49
|
+
|
|
50
|
+
<div class="footer__links">
|
|
51
|
+
{{#each quoteFooterData.links}}
|
|
52
|
+
<a href="{{#if this.modal}}/{{this.url}}{{else}}{{this.url}}{{/if}}" {{#xif "this.modal === true" }}data-load="./modals/{{this.url}}/index.html" data-bind="modal-link"{{/xif}} {{#if this.target}}target="{{this.target}}" {{#xif "this.target === '_blank'"}} rel="noopener noreferrer"{{/xif}} {{/if}}>
|
|
53
|
+
{{this.text}}
|
|
54
|
+
</a>
|
|
55
|
+
{{/each}}
|
|
56
|
+
<!--
|
|
57
|
+
- Define the customFooterLinks array of objects in template.js / siteconfig.js
|
|
58
|
+
- e.g customFooterLinks: [{url: '/test', text: 'Test Link'}]
|
|
59
|
+
-->
|
|
60
|
+
{{#if this.customFooterLinks}}
|
|
61
|
+
{{#each this.customFooterLinks}}
|
|
62
|
+
<a href="{{#if this.modal}}/{{this.url}}{{else}}{{this.url}}{{/if}}" {{#xif "this.modal === true" }}data-load="./modals/{{this.url}}/index.html" data-bind="modal-link"{{/xif}} {{#if this.target}}target="{{this.target}}" {{#xif "this.target === '_blank'"}} rel="noopener noreferrer"{{/xif}}{{/if}}>{{this.text}}</a>
|
|
63
|
+
{{/each}}
|
|
64
|
+
{{/if}}
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
{{#xif "this.privacylinks === 'bottom'"}}
|
|
68
|
+
<div class="footer__links">
|
|
69
|
+
{{#each quoteFooterData.privacyLinks}}
|
|
70
|
+
<a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">{{{this.text}}}</a>
|
|
71
|
+
{{/each}}
|
|
72
|
+
<!--
|
|
73
|
+
- Define the customPrivacyLinks array of objects in template.js / siteconfig.js
|
|
74
|
+
- e.g customPrivacyLinks: [{ text: 'This is a custom link', anchor: 'ccpa' }]
|
|
75
|
+
-->
|
|
76
|
+
{{#if this.customPrivacyLinks}}
|
|
77
|
+
{{#each this.customPrivacyLinks}}
|
|
78
|
+
<a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">{{{this.text}}}</a>
|
|
79
|
+
{{/each}}
|
|
80
|
+
{{/if}}
|
|
81
|
+
</div>
|
|
82
|
+
{{/xif}}
|
|
83
|
+
|
|
84
|
+
{{#xif 'this.copyright === "bottom"'}}
|
|
85
|
+
<div class="footer__copyright">
|
|
86
|
+
© Copyright {{year}} {{website_name}}.
|
|
87
|
+
{{{quoteFooterData.copyright}}}
|
|
88
|
+
<div class="footer__captcha-disclosure">
|
|
89
|
+
{{quoteFooterData.capchaDisclosure.text}}
|
|
90
|
+
<a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
|
|
91
|
+
<a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a> apply.
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
{{/xif}}
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
<div class="footer container">
|
|
2
|
+
<img src="{{assetsPath}}/images/logos/misc/bbb.svg" alt="BBB Accredited Logo" class="footer__bbb-logo footer__bbb">
|
|
3
|
+
<div class="footer__links contractor-link">
|
|
4
|
+
{{quoteFooterData.contractor.text}}
|
|
5
|
+
<a target="_blank" href="{{quoteFooterData.contractor.link}}" rel="noopener noreferrer">
|
|
6
|
+
{{quoteFooterData.contractor.linkText}}
|
|
7
|
+
</a>
|
|
8
|
+
</div>
|
|
9
|
+
{{#xif 'this.copyright === "top"'}}
|
|
10
|
+
<div class="footer__row">
|
|
11
|
+
<div class="footer__copyright">
|
|
12
|
+
© Copyright {{year}} {{company_name}}. {{{quoteFooterData.copyright}}}
|
|
13
|
+
</div>
|
|
14
|
+
<div class="footer__captcha-disclosure">
|
|
15
|
+
{{quoteFooterData.capchaDisclosure.text}}
|
|
16
|
+
<a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
|
|
17
|
+
<a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a> apply.
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
{{/xif}}
|
|
21
|
+
{{#xif "this.privacylinks === 'top'"}}
|
|
22
|
+
<div class="footer__row">
|
|
23
|
+
<ul class="footer__links">
|
|
24
|
+
{{#each quoteFooterData.privacyLinks}}
|
|
25
|
+
<li>
|
|
26
|
+
<a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">
|
|
27
|
+
{{{this.text}}}
|
|
28
|
+
</a>
|
|
29
|
+
</li>
|
|
30
|
+
{{/each}}
|
|
31
|
+
<!--
|
|
32
|
+
- Define the customPrivacyLinks array of objects in template.js / siteconfig.js
|
|
33
|
+
- e.g customPrivacyLinks: [{ text: 'This is a custom link', anchor: 'ccpa' }]
|
|
34
|
+
-->
|
|
35
|
+
{{#if this.customPrivacyLinks}}
|
|
36
|
+
{{#each this.customPrivacyLinks}}
|
|
37
|
+
<li>
|
|
38
|
+
<a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">
|
|
39
|
+
{{{this.text}}}
|
|
40
|
+
</a>
|
|
41
|
+
</li>
|
|
42
|
+
{{/each}}
|
|
43
|
+
{{/if}}
|
|
44
|
+
</ul>
|
|
45
|
+
</div>
|
|
46
|
+
{{/xif}}
|
|
47
|
+
<div class="footer__row">
|
|
48
|
+
<ul class="footer__links">
|
|
49
|
+
{{#each quoteFooterData.links}}
|
|
50
|
+
<li>
|
|
51
|
+
<a href="{{#if this.modal}}/{{this.url}}{{else}}{{this.url}}{{/if}}" {{#xif "this.modal === true" }}data-load="./modals/{{this.url}}/index.html" data-bind="modal-link"{{/xif}} {{#if this.target}}target="{{this.target}}"{{#xif "this.target === '_blank'"}} rel="noopener noreferrer"{{/xif}}{{/if}}>{{this.text}}</a>
|
|
52
|
+
</li>
|
|
53
|
+
{{/each}}
|
|
54
|
+
<!--
|
|
55
|
+
- Define the customFooterLinks array of objects in template.js / siteconfig.js
|
|
56
|
+
- e.g customFooterLinks: [{url: 'test', text: 'Test Link'}]
|
|
57
|
+
-->
|
|
58
|
+
{{#if this.customFooterLinks}}
|
|
59
|
+
{{#each this.customFooterLinks}}
|
|
60
|
+
<li>
|
|
61
|
+
<a href="{{#if this.modal}}/{{this.url}}{{else}}{{this.url}}{{/if}}" {{#xif "this.modal === true" }}data-load="./modals/{{this.url}}/index.html" data-bind="modal-link"{{/xif}} {{#if this.target}}target="{{this.target}}"{{#xif "this.target === '_blank'"}} rel="noopener noreferrer"{{/xif}}{{/if}}>{{this.text}}</a>
|
|
62
|
+
</li>
|
|
63
|
+
{{/each}}
|
|
64
|
+
{{/if}}
|
|
65
|
+
</ul>
|
|
66
|
+
</div>
|
|
67
|
+
{{#xif 'this.copyright === "middle"'}}
|
|
68
|
+
<div class="footer__row">
|
|
69
|
+
<div class="footer__copyright">
|
|
70
|
+
© Copyright {{year}} {{company_name}}. {{{quoteFooterData.copyright}}}
|
|
71
|
+
</div>
|
|
72
|
+
<div class="footer__captcha-disclosure">
|
|
73
|
+
{{quoteFooterData.capchaDisclosure.text}}
|
|
74
|
+
<a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
|
|
75
|
+
<a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a> apply.
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
{{/xif}}
|
|
79
|
+
{{#xif "this.privacylinks === 'bottom'"}}
|
|
80
|
+
<div class="footer__row">
|
|
81
|
+
<ul class="footer__links">
|
|
82
|
+
{{#each quoteFooterData.privacyLinks}}
|
|
83
|
+
<li>
|
|
84
|
+
<a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">
|
|
85
|
+
{{{this.text}}}
|
|
86
|
+
</a>
|
|
87
|
+
</li>
|
|
88
|
+
{{/each}}
|
|
89
|
+
<!--
|
|
90
|
+
- Define the customPrivacyLinks array of objects in template.js / siteconfig.js
|
|
91
|
+
- e.g customPrivacyLinks: [{ text: 'This is a custom link', anchor: 'ccpa' }]
|
|
92
|
+
-->
|
|
93
|
+
{{#if this.customPrivacyLinks}}
|
|
94
|
+
{{#each this.customPrivacyLinks}}
|
|
95
|
+
<li>
|
|
96
|
+
<a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">
|
|
97
|
+
{{{this.text}}}
|
|
98
|
+
</a>
|
|
99
|
+
</li>
|
|
100
|
+
{{/each}}
|
|
101
|
+
{{/if}}
|
|
102
|
+
</ul>
|
|
103
|
+
</div>
|
|
104
|
+
{{/xif}}
|
|
105
|
+
{{#xif 'this.copyright === "bottom"'}}
|
|
106
|
+
<div class="footer__row">
|
|
107
|
+
<div class="footer__copyright">
|
|
108
|
+
© Copyright {{year}} {{company_name}}. {{{quoteFooterData.copyright}}}
|
|
109
|
+
</div>
|
|
110
|
+
<div class="footer__captcha-disclosure">
|
|
111
|
+
{{quoteFooterData.capchaDisclosure.text}}
|
|
112
|
+
<a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
|
|
113
|
+
<a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a> apply.
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
{{/xif}}
|
|
117
|
+
</div>
|