mod-build 3.4.24 → 3.4.26-beta.3

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.
@@ -48,7 +48,8 @@ module.exports = function(gulp, gulpPlugins, siteSettings, siteData) {
48
48
  // local dev files
49
49
  const remoteFilesForLocalDev = {
50
50
  '/scripts/mod-form.js': ['/temp/scripts/', 'mod-form.js'],
51
- '/scripts/mod-utils.js': ['/temp/scripts/', 'mod-utils.js']
51
+ '/scripts/mod-utils.js': ['/temp/scripts/', 'mod-utils.js'],
52
+ '/scripts/qs-form.js': ['/temp/scripts/', 'qs-form.js']
52
53
  };
53
54
 
54
55
  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.24",
3
+ "version": "3.4.26-beta.3",
4
4
  "description": "Share components for S3 sites.",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -0,0 +1,43 @@
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: '/publisher/',
18
+ modal: true
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
+ }
38
+ };
39
+
40
+ return data;
41
+ };
42
+
43
+ module.exports = qsFooterData;
@@ -0,0 +1,54 @@
1
+ var quoteFooterData = function() {
2
+ var data = {
3
+ quoteFooterData: {
4
+ copyright: 'All Rights Reserved.',
5
+ capchaDisclosure: {
6
+ text: 'This site is protected by reCAPTCHA and the Google',
7
+ privacy: {
8
+ text: 'Privacy Policy',
9
+ url: 'https://policies.google.com/privacy'
10
+ },
11
+ terms: {
12
+ text: 'Terms of Service',
13
+ url: 'https://policies.google.com/terms'
14
+ }
15
+ },
16
+ privacyLinks: [
17
+ {
18
+ text: 'California Privacy',
19
+ anchor: 'ccpa'
20
+ },
21
+ {
22
+ text: 'New York Privacy',
23
+ anchor: 'nyna'
24
+ },
25
+ {
26
+ text: 'Do Not Sell My Personal Information',
27
+ anchor: 'uspi'
28
+ }
29
+ ],
30
+ links: [
31
+ {
32
+ type: 'about',
33
+ text: 'About Us'
34
+ },
35
+ {
36
+ type: 'terms',
37
+ text: 'Terms of Use'
38
+ },
39
+ {
40
+ type: 'privacy',
41
+ text: 'Privacy Policy'
42
+ },
43
+ {
44
+ type: 'publisher',
45
+ text: 'I\'m a publisher'
46
+ }
47
+ ]
48
+ }
49
+ };
50
+
51
+ return data;
52
+ };
53
+
54
+ module.exports = quoteFooterData;
@@ -349,6 +349,16 @@ modForm.getDefaultQuadByDomain = function() {
349
349
  c: '1667462',
350
350
  s: '26401',
351
351
  f: '201910011622030'
352
+ },
353
+ 'kitchencabinetrefacing.org': {
354
+ c: '1668109',
355
+ s: '26393',
356
+ f: '201910231539300'
357
+ },
358
+ 'm.kitchencabinetrefacing.org': {
359
+ c: '1670076',
360
+ s: '26401',
361
+ f: '202002181625140'
352
362
  }
353
363
  };
354
364
 
@@ -0,0 +1,57 @@
1
+ <footer class="footer">
2
+ <div class="container">
3
+ {{#xif 'this.contractorLink === "y"'}}
4
+ <div class="footer__head-link">
5
+ Are you a contractor?
6
+ <a target="_blank" href="https://modernize.com/pro/register/leads/?trade=bathrooms&utm_campaign=quinstreet-referral">
7
+ Join Our Contractor Network
8
+ </a>
9
+ </div>
10
+ {{/xif}}
11
+ <ul class="footer__links">
12
+ {{#each qsFooterData.links}}
13
+ <li>
14
+ <a
15
+ {{#xif "!this.modal" }}
16
+ href="{{this.url}}"
17
+ target="_blank"
18
+ rel="noopener noreferrer"
19
+ {{/xif}}
20
+ {{#xif "this.modal" }}
21
+ data-bind="modal-link"
22
+ data-load="/modals{{this.url}}index.html"
23
+ {{/xif}}
24
+ >
25
+ {{this.name}}
26
+ </a>
27
+ </li>
28
+ {{/each}}
29
+ <!--
30
+ - Define the customFooterLinks array of objects in template.js / siteconfig.js
31
+ - e.g customFooterLinks: [{name: 'Test Link', url: '/test/', modal: true}]
32
+ -->
33
+ {{#if this.customFooterLinks}}
34
+ {{#each this.customFooterLinks}}
35
+ <li>
36
+ <a
37
+ {{#xif "!this.modal" }}
38
+ href="{{this.url}}"
39
+ target="_blank"
40
+ rel="noopener noreferrer"
41
+ {{/xif}}
42
+ {{#xif "this.modal" }}
43
+ data-bind="modal-link"
44
+ data-load="/modals{{this.url}}index.html"
45
+ {{/xif}}
46
+ >
47
+ {{this.name}}
48
+ </a>
49
+ </li>
50
+ {{/each}}
51
+ {{/if}}
52
+ </ul>
53
+ <p class="footer__copyright">
54
+ Copyright &copy; {{year}} {{qsFooterData.copyright}}
55
+ </p>
56
+ </div>
57
+ </footer>
@@ -0,0 +1,89 @@
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">
4
+ <div class="footer__content">
5
+ {{#xif 'this.copyright === "top"'}}
6
+ <div class="footer__copyright">
7
+ &copy; Copyright {{year}} {{website_name}}.
8
+ {{{quoteFooterData.copyright}}}
9
+ <div class="footer__captcha-disclosure">
10
+ {{quoteFooterData.capchaDisclosure.text}}
11
+ <a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
12
+ <a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a>&nbsp;apply.
13
+ </div>
14
+ </div>
15
+ {{/xif}}
16
+ {{#xif "this.privacylinks === 'top'"}}
17
+ <div class="footer__links">
18
+ {{#each quoteFooterData.privacyLinks}}
19
+ <a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">{{{this.text}}}</a>
20
+ {{/each}}
21
+ <!--
22
+ - Define the customPrivacyLinks array of objects in template.js / siteconfig.js
23
+ - e.g customPrivacyLinks: [{ text: 'This is a custom link', anchor: 'ccpa' }]
24
+ -->
25
+ {{#if this.customPrivacyLinks}}
26
+ {{#each this.customPrivacyLinks}}
27
+ <a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">{{{this.text}}}</a>
28
+ {{/each}}
29
+ {{/if}}
30
+ </div>
31
+ {{/xif}}
32
+ {{#xif 'this.copyright === "middle"'}}
33
+ <div class="footer__copyright">
34
+ &copy; Copyright {{year}} {{website_name}}.
35
+ {{{quoteFooterData.copyright}}}
36
+ <div class="footer__captcha-disclosure">
37
+ {{quoteFooterData.capchaDisclosure.text}}
38
+ <a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
39
+ <a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a>&nbsp;apply.
40
+ </div>
41
+ </div>
42
+ {{/xif}}
43
+
44
+ <div class="footer__links">
45
+ {{#each quoteFooterData.links}}
46
+ <a href="/{{this.type}}" data-load="./modals/{{this.type}}/index.html" data-bind="modal-link">{{this.text}}</a>
47
+ {{/each}}
48
+ <!--
49
+ - Define the customFooterLinks array of objects in template.js / siteconfig.js
50
+ - e.g customFooterLinks: [{type: 'test', text: 'Test Link'}]
51
+ -->
52
+ {{#if this.customFooterLinks}}
53
+ {{#each this.customFooterLinks}}
54
+ <a href="/{{this.type}}" data-load="./modals/{{this.type}}/index.html" data-bind="modal-link">{{this.text}}</a>
55
+ {{/each}}
56
+ {{/if}}
57
+ </div>
58
+
59
+ {{#xif "this.privacylinks === 'bottom'"}}
60
+ <div class="footer__links">
61
+ {{#each quoteFooterData.privacyLinks}}
62
+ <a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">{{{this.text}}}</a>
63
+ {{/each}}
64
+ <!--
65
+ - Define the customPrivacyLinks array of objects in template.js / siteconfig.js
66
+ - e.g customPrivacyLinks: [{ text: 'This is a custom link', anchor: 'ccpa' }]
67
+ -->
68
+ {{#if this.customPrivacyLinks}}
69
+ {{#each this.customPrivacyLinks}}
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
+ {{/if}}
73
+ </div>
74
+ {{/xif}}
75
+
76
+ {{#xif 'this.copyright === "bottom"'}}
77
+ <div class="footer__copyright">
78
+ &copy; Copyright {{year}} {{website_name}}.
79
+ {{{quoteFooterData.copyright}}}
80
+ <div class="footer__captcha-disclosure">
81
+ {{quoteFooterData.capchaDisclosure.text}}
82
+ <a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
83
+ <a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a>&nbsp;apply.
84
+ </div>
85
+ </div>
86
+ {{/xif}}
87
+ </div>
88
+ </div>
89
+ </div>
@@ -0,0 +1,111 @@
1
+ <div class="footer container">
2
+ <img src="{{assetsPath}}/images/logos/misc/bbb.svg" alt="BBB Accredited Logo" class="footer__bbb-logo">
3
+ {{#xif 'this.copyright === "top"'}}
4
+ <div class="footer__row">
5
+ <div class="footer__copyright">
6
+ &copy; Copyright {{year}} {{company_name}}. {{{quoteFooterData.copyright}}}
7
+ </div>
8
+ <div class="footer__captcha-disclosure">
9
+ {{quoteFooterData.capchaDisclosure.text}}
10
+ <a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
11
+ <a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a>&nbsp;apply.
12
+ </div>
13
+ </div>
14
+ {{/xif}}
15
+ {{#xif "this.privacylinks === 'top'"}}
16
+ <div class="footer__row">
17
+ <ul class="footer__links">
18
+ {{#each quoteFooterData.privacyLinks}}
19
+ <li>
20
+ <a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">
21
+ {{{this.text}}}
22
+ </a>
23
+ </li>
24
+ {{/each}}
25
+ <!--
26
+ - Define the customPrivacyLinks array of objects in template.js / siteconfig.js
27
+ - e.g customPrivacyLinks: [{ text: 'This is a custom link', anchor: 'ccpa' }]
28
+ -->
29
+ {{#if this.customPrivacyLinks}}
30
+ {{#each this.customPrivacyLinks}}
31
+ <li>
32
+ <a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">
33
+ {{{this.text}}}
34
+ </a>
35
+ </li>
36
+ {{/each}}
37
+ {{/if}}
38
+ </ul>
39
+ </div>
40
+ {{/xif}}
41
+ <div class="footer__row">
42
+ <ul class="footer__links">
43
+ {{#each quoteFooterData.links}}
44
+ <li>
45
+ <a href="{{this.type}}" data-load="./modals/{{this.type}}/index.html" data-bind="modal-link">{{this.text}}</a>
46
+ </li>
47
+ {{/each}}
48
+ <!--
49
+ - Define the customFooterLinks array of objects in template.js / siteconfig.js
50
+ - e.g customFooterLinks: [{type: 'test', text: 'Test Link'}]
51
+ -->
52
+ {{#if this.customFooterLinks}}
53
+ {{#each this.customFooterLinks}}
54
+ <li>
55
+ <a href="{{this.type}}" data-load="./modals/{{this.type}}/index.html" data-bind="modal-link">{{this.text}}</a>
56
+ </li>
57
+ {{/each}}
58
+ {{/if}}
59
+ </ul>
60
+ </div>
61
+ {{#xif 'this.copyright === "middle"'}}
62
+ <div class="footer__row">
63
+ <div class="footer__copyright">
64
+ &copy; Copyright {{year}} {{company_name}}. {{{quoteFooterData.copyright}}}
65
+ </div>
66
+ <div class="footer__captcha-disclosure">
67
+ {{quoteFooterData.capchaDisclosure.text}}
68
+ <a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
69
+ <a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a>&nbsp;apply.
70
+ </div>
71
+ </div>
72
+ {{/xif}}
73
+ {{#xif "this.privacylinks === 'bottom'"}}
74
+ <div class="footer__row">
75
+ <ul class="footer__links">
76
+ {{#each quoteFooterData.privacyLinks}}
77
+ <li>
78
+ <a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">
79
+ {{{this.text}}}
80
+ </a>
81
+ </li>
82
+ {{/each}}
83
+ <!--
84
+ - Define the customPrivacyLinks array of objects in template.js / siteconfig.js
85
+ - e.g customPrivacyLinks: [{ text: 'This is a custom link', anchor: 'ccpa' }]
86
+ -->
87
+ {{#if this.customPrivacyLinks}}
88
+ {{#each this.customPrivacyLinks}}
89
+ <li>
90
+ <a href="{{../links.privacy}}" data-load="./modals/privacy/index.html" data-bind="modal-link" data-anchor="#{{this.anchor}}">
91
+ {{{this.text}}}
92
+ </a>
93
+ </li>
94
+ {{/each}}
95
+ {{/if}}
96
+ </ul>
97
+ </div>
98
+ {{/xif}}
99
+ {{#xif 'this.copyright === "bottom"'}}
100
+ <div class="footer__row">
101
+ <div class="footer__copyright">
102
+ &copy; Copyright {{year}} {{company_name}}. {{{quoteFooterData.copyright}}}
103
+ </div>
104
+ <div class="footer__captcha-disclosure">
105
+ {{quoteFooterData.capchaDisclosure.text}}
106
+ <a href="{{quoteFooterData.capchaDisclosure.privacy.url}}" target="_blank">{{quoteFooterData.capchaDisclosure.privacy.text}}</a> and
107
+ <a href="{{quoteFooterData.capchaDisclosure.terms.url}}" target="_blank">{{{quoteFooterData.capchaDisclosure.terms.text}}}</a>&nbsp;apply.
108
+ </div>
109
+ </div>
110
+ {{/xif}}
111
+ </div>