sfc-utils 1.2.7 → 1.3.1

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/accountswap.js ADDED
@@ -0,0 +1,31 @@
1
+
2
+ // Detect if there's a valid signin -- if so, swap Subscribe button to Account button
3
+ // Any domain + /realm/ should work for an account link
4
+ const accountURL = "/realm/"
5
+
6
+ const pollForAccount = function(i){
7
+ // Start the iterator
8
+ if (!i){
9
+ i = 0
10
+ }
11
+ // Safecheck for treg since it might not be global yet
12
+ if (window && window.treg && window.treg.identity && window.treg.identity.isEntitled){
13
+ // We got a valid entitlement! Let's see if the button exists and swap our new one in
14
+ const subButton = documment.querySelector('.sub-box')
15
+ console.log("found and swapped")
16
+ if (subButton){
17
+ subButton.setAttribute("href", accountURL)
18
+ subButton.innerText = "Account"
19
+ }
20
+ } else {
21
+ if (i > 10){
22
+ // If we've waited 10 seconds and there's still no entitlement, assume we aren't getting one
23
+ return false
24
+ }
25
+ console.log("not found, polling " + i)
26
+ // Check again after 1 sec
27
+ setTimeout(() => {pollForAccount(i+1)}, 1000)
28
+ }
29
+ }
30
+
31
+ module.exports = { pollForAccount }
package/brands.js CHANGED
@@ -113,7 +113,7 @@ let getBrands = function(market){
113
113
  /* Connecticut */
114
114
  CT: {
115
115
  styles: {
116
- "@brand": "#900900",
116
+ "@brand": "#1A98FF",
117
117
  },
118
118
  attributes: {
119
119
  "marketPrefix": "in",
package/index.js CHANGED
@@ -246,9 +246,10 @@ let blendHDN = function(meta){
246
246
  let { getBrands } = require('./brands')
247
247
  let { getSettings } = require('./settings')
248
248
  let { getNav } = require('./nav')
249
+ let { getNav2 } = require('./nav2')
249
250
  let { getSpecialNav } = require('./specialnav')
250
251
  let { getFooter } = require('./footer')
251
252
  let { getTopper } = require('./topper')
252
253
  let { getBlueconic } = require('./blueconic')
253
254
 
254
- module.exports = { appCheck, blendHDN, getSettings, getBrands, getNav, getSpecialNav, getFooter, getTopper, getBlueconic }
255
+ module.exports = { appCheck, blendHDN, getSettings, getBrands, getNav, getNav2, getSpecialNav, getFooter, getTopper, getBlueconic }
package/nav2.js ADDED
@@ -0,0 +1,182 @@
1
+ let { getBrands } = require("./brands");
2
+
3
+ // Handle nav for various markets and include nav options for other links
4
+ let getNav2 = function (
5
+ meta,
6
+ urlAdd,
7
+ forceColor,
8
+ navLink,
9
+ navArray
10
+ ) {
11
+ // If we aren't passing meta in, we have to call getSettings here
12
+ if (!meta) {
13
+ let { getSettings } = require("./settings");
14
+ meta = getSettings();
15
+ }
16
+
17
+ // If a navArray was provided, create the subnav
18
+ let subnav = "";
19
+ let dropdownIcon = "";
20
+ if (navArray && navArray.length > 0) {
21
+ subnav = `<ul id="subnav">`;
22
+ for (let i = 0; i < navArray.length; i++) {
23
+ subnav += `<li><a class="active" href="${navArray[i].url}" target="${navArray[i].target}"><span class="arrow-bullet">▶</span> ${navArray[i].text}</a></li>`;
24
+ }
25
+ subnav += `</ul>`;
26
+ // Add a dropdown icon
27
+ dropdownIcon = `<div class="dropdown-icon">▾</div>`;
28
+ }
29
+
30
+ // Extension to URL if passed in
31
+ if (!urlAdd) {
32
+ urlAdd = "";
33
+ }
34
+
35
+ let {
36
+ attributes: { marketPrefix, invert, subscribeLink },
37
+ } = getBrands(meta.PROJECT.MARKET_KEY);
38
+ // Handle various CT domains
39
+ if (typeof window !== "undefined") {
40
+ switch (window.location.origin) {
41
+ case "https://www.ctpost.com":
42
+ marketPrefix = "ct";
43
+ break;
44
+ case "https://www.nhregister.com":
45
+ marketPrefix = "nh";
46
+ break;
47
+ case "https://www.greenwichtime.com":
48
+ marketPrefix = "gt";
49
+ break;
50
+ case "https://www.stamfordadvocate.com":
51
+ marketPrefix = "st";
52
+ break;
53
+ case "https://www.thehour.com":
54
+ marketPrefix = "th";
55
+ break;
56
+ case "https://www.newstimes.com":
57
+ marketPrefix = "nt";
58
+ break;
59
+ case "https://www.middletownpress.com":
60
+ marketPrefix = "mp";
61
+ break;
62
+ case "https://www.ctinsider.com":
63
+ marketPrefix = "in";
64
+ break;
65
+
66
+ case "https://www.beaumontenterprise.com":
67
+ marketPrefix = "texcom/beau";
68
+ break;
69
+ case "https://www.lmtonline.com":
70
+ marketPrefix = "texcom/laredo";
71
+ break;
72
+ case "https://www.mrt.com":
73
+ marketPrefix = "texcom/mrt";
74
+ break;
75
+ case "https://www.myplainview.com":
76
+ marketPrefix = "texcom/plain";
77
+ break;
78
+
79
+ case "https://www.bigrapidsnews.com":
80
+ marketPrefix = "midcom/big";
81
+ break;
82
+ case "https://www.manisteenews.com":
83
+ marketPrefix = "midcom/mani";
84
+ break;
85
+ case "https://www.ourmidland.com":
86
+ marketPrefix = "midcom/mid";
87
+ break;
88
+ case "https://www.michigansthumb.com":
89
+ marketPrefix = "midcom/huron";
90
+ break;
91
+ case "https://www.recordpatriot.com":
92
+ marketPrefix = "midcom/benzie";
93
+ break;
94
+ case "https://www.theheraldreview.com":
95
+ marketPrefix = "midcom/hr";
96
+ break;
97
+ case "https://www.lakecountystar.com":
98
+ marketPrefix = "midcom/lc";
99
+ break;
100
+ case "https://www.thetelegraph.com":
101
+ marketPrefix = "midcom/alton";
102
+ break;
103
+ case "https://www.theintelligencer.com":
104
+ marketPrefix = "midcom/ed";
105
+ break;
106
+ case "https://www.myjournalcourier.com":
107
+ marketPrefix = "midcom/jv";
108
+ break;
109
+ }
110
+ }
111
+
112
+ // Default is white text on black nav (SFC style)
113
+ let invertClass = "";
114
+ let color = "white";
115
+ // If inverted, do black on white nav
116
+ // Only change things if color isn't forced to white
117
+ if (invert || forceColor === "white") {
118
+ invertClass = "invert";
119
+ color = "black";
120
+ }
121
+
122
+ let subfolder = "";
123
+ if (meta.PROJECT.SUBFOLDER) {
124
+ subfolder = meta.PROJECT.SUBFOLDER + "/";
125
+ }
126
+
127
+ // If a link object was provided, format the insert
128
+ let navLinkInsert = "";
129
+ if (navLink) {
130
+ navLinkInsert = `
131
+ <a
132
+ class="topper-nav-title"
133
+ id="nav-title"
134
+ href="${navLink.url}"
135
+ target="${navLink.target || "_blank"}"
136
+ >
137
+ ${navLink.text}${dropdownIcon}
138
+ </a>
139
+ `
140
+ }
141
+
142
+ let rightBlock = `
143
+ <a class="sub-box" href="${subscribeLink}" target="_blank">
144
+ <div>Subscribe</div>
145
+ </a>
146
+ `;
147
+
148
+
149
+ let navHTML = `<nav class="topper-nav-container ${invertClass}">
150
+ <div class="topper-nav-left">
151
+ ${navLinkInsert}
152
+ </div>
153
+ <div class="topper-nav-center">
154
+ <a
155
+ href="/"
156
+ target="_blank"
157
+ rel="noopener noreferrer"
158
+ >
159
+ <div>
160
+ <img
161
+ class="topper-nav-desk-logo"
162
+ alt="Logo"
163
+ src="https://files.sfchronicle.com/static-assets/logos/${marketPrefix}-${color}.png"
164
+ ></img>
165
+ <img
166
+ class="topper-nav-mobile-logo"
167
+ alt="Logo"
168
+ src="https://files.sfchronicle.com/static-assets/logos/${marketPrefix}-square-${color}.png"
169
+ ></img>
170
+ </div>
171
+ </a>
172
+ </div>
173
+ <div class="topper-nav-right">
174
+ ${rightBlock}
175
+ </div>
176
+ ${subnav}
177
+ </nav>`;
178
+
179
+ return navHTML;
180
+ };
181
+
182
+ module.exports = { getNav2 };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sfc-utils",
3
- "version": "1.2.7",
3
+ "version": "1.3.1",
4
4
  "author": "ewagstaff <evanjwagstaff@gmail.com>",
5
5
  "dependencies": {
6
6
  "archieml": "^0.4.2",
package/topper.js CHANGED
@@ -358,7 +358,7 @@ let getTopper = function(settings){
358
358
  }
359
359
  .topper-intro-img-sfc-utils, #topper-intro-video-sfc-utils{
360
360
  object-fit: contain !important;
361
- positon: relative;
361
+ position: relative;
362
362
  }
363
363
  #topper-intro-container.full #topper-article-title{
364
364
  text-align: left !important;