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.
@@ -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) {
@@ -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
- var templatesData = Object.assign(commonData(), siteData, { isLocal, nodeEnv, assetsPath, buildPath });
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mod-build",
3
- "version": "3.4.26-beta.1",
3
+ "version": "3.4.26-beta.5",
4
4
  "description": "Share components for S3 sites.",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -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 &copy; {{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
+ &copy; 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>&nbsp;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
+ &copy; 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>&nbsp;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
+ &copy; 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>&nbsp;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
+ &copy; 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>&nbsp;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
+ &copy; 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>&nbsp;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
+ &copy; 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>&nbsp;apply.
114
+ </div>
115
+ </div>
116
+ {{/xif}}
117
+ </div>