Update navigation to bold written stories and use normal font for TBD

This commit is contained in:
Colin 2025-12-02 13:18:29 -05:00
parent 374d29018a
commit b4b7dcb079
Signed by: colin
SSH Key Fingerprint: SHA256:nRPCQTeMFLdGytxRQmPVK9VXY3/ePKQ5lGRyJhT5DY8
4 changed files with 75 additions and 78 deletions

View File

@ -42,21 +42,22 @@
<li class="dropdown"> <li class="dropdown">
<a href="/stories/" id="nav-stories">Stories</a> <a href="/stories/" id="nav-stories">Stories</a>
<div class="dropdown-content"> <div class="dropdown-content">
<a href="/stories/airport-dns.html" id="nav-airportdns">Airport Dns <span class="nav-status not-written">*</span></a> <a href="/stories/airport-dns.html" id="nav-airportdns" class="nav-story-tbd">Airport Dns</a>
<a href="/stories/app-development.html" id="nav-appdevelopment">App Development <span class="nav-status written">*</span></a> <a href="/stories/app-development.html" id="nav-appdevelopment" class="nav-story-written">App Development</a>
<a href="/stories/athion-turnaround.html" id="nav-athionturnaround">Athion Turnaround <span class="nav-status written">*</span></a> <a href="/stories/athion-turnaround.html" id="nav-athionturnaround" class="nav-story-written">Athion Turnaround</a>
<a href="/stories/fawe-plotsquared.html" id="nav-faweplotsquared">Fawe Plotsquared <span class="nav-status not-written">*</span></a> <a href="/stories/fawe-plotsquared.html" id="nav-faweplotsquared" class="nav-story-tbd">Fawe Plotsquared</a>
<a href="/stories/healthcare-platform.html" id="nav-healthcareplatform">Healthcare Platform <span class="nav-status not-written">*</span></a> <a href="/stories/healthcare-platform.html" id="nav-healthcareplatform" class="nav-story-tbd">Healthcare Platform</a>
<a href="/stories/home-infrastructure.html" id="nav-homeinfrastructure">Home Infrastructure <span class="nav-status written">*</span></a> <a href="/stories/home-infrastructure.html" id="nav-homeinfrastructure" class="nav-story-written">Home Infrastructure</a>
<a href="/stories/motherboard-repair.html" id="nav-motherboardrepair">Motherboard Repair <span class="nav-status written">*</span></a> <a href="/stories/motherboard-repair.html" id="nav-motherboardrepair" class="nav-story-written">Motherboard Repair</a>
<a href="/stories/nitric-leadership.html" id="nav-nitricleadership">Nitric Leadership <span class="nav-status not-written">*</span></a> <a href="/stories/nitric-leadership.html" id="nav-nitricleadership" class="nav-story-tbd">Nitric Leadership</a>
<a href="/stories/nuclear-dns.html" id="nav-nucleardns">Nuclear DNS <span class="nav-status written">*</span></a> <a href="/stories/nuclear-dns.html" id="nav-nucleardns" class="nav-story-written">Nuclear Dns</a>
<a href="/stories/open-source-success.html" id="nav-opensourcesuccess">Open Source Success <span class="nav-status written">*</span></a> <a href="/stories/open-source-success.html" id="nav-opensourcesuccess" class="nav-story-written">Open Source Success</a>
<a href="/stories/showerloop.html" id="nav-showerloop">Showerloop <span class="nav-status written">*</span></a> <a href="/stories/scansnap-webdav.html" id="nav-scansnapwebdav" class="nav-story-written">Scansnap Webdav</a>
<a href="/stories/viperwire.html" id="nav-viperwire">Viperwire <span class="nav-status written">*</span></a> <a href="/stories/showerloop.html" id="nav-showerloop" class="nav-story-written">Showerloop</a>
<a href="/stories/web-design-java.html" id="nav-webdesignjava">Web Design Java <span class="nav-status written">*</span></a> <a href="/stories/viperwire.html" id="nav-viperwire" class="nav-story-written">Viperwire</a>
<a href="/stories/wordpress-security.html" id="nav-wordpresssecurity">Wordpress Security <span class="nav-status not-written">*</span></a> <a href="/stories/web-design-java.html" id="nav-webdesignjava" class="nav-story-written">Web Design Java</a>
<a href="/stories/youtube-game-dev.html" id="nav-youtubegamedev">Youtube Game Dev <span class="nav-status written">*</span></a> <a href="/stories/wordpress-security.html" id="nav-wordpresssecurity" class="nav-story-tbd">Wordpress Security</a>
<a href="/stories/youtube-game-dev.html" id="nav-youtubegamedev" class="nav-story-written">Youtube Game Dev</a>
</div> </div>
</li> </li>
<li class="dropdown"> <li class="dropdown">

View File

@ -2,145 +2,151 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url> <url>
<loc>https://colinknapp.com/index.html</loc> <loc>https://colinknapp.com/index.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/one-pager-tools/csv-tool.html</loc> <loc>https://colinknapp.com/one-pager-tools/csv-tool.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/resumes/portfolio.html</loc> <loc>https://colinknapp.com/one-pager-tools/utm-tool.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/resumes/business-development.html</loc> <loc>https://colinknapp.com/resumes/business-development.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/resumes/devsecops.html</loc> <loc>https://colinknapp.com/resumes/devsecops.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://colinknapp.com/resumes/portfolio.html</loc>
<lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/resumes/team-leadership.html</loc> <loc>https://colinknapp.com/resumes/team-leadership.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/resumes/tool-building.html</loc> <loc>https://colinknapp.com/resumes/tool-building.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/airport-dns.html</loc> <loc>https://colinknapp.com/stories/airport-dns.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/app-development.html</loc> <loc>https://colinknapp.com/stories/app-development.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/athion-turnaround.html</loc> <loc>https://colinknapp.com/stories/athion-turnaround.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/fawe-plotsquared.html</loc> <loc>https://colinknapp.com/stories/fawe-plotsquared.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/healthcare-platform.html</loc> <loc>https://colinknapp.com/stories/healthcare-platform.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/home-infrastructure.html</loc> <loc>https://colinknapp.com/stories/home-infrastructure.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/index.html</loc> <loc>https://colinknapp.com/stories/index.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/motherboard-repair.html</loc> <loc>https://colinknapp.com/stories/motherboard-repair.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/nitric-leadership.html</loc> <loc>https://colinknapp.com/stories/nitric-leadership.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/nuclear-dns.html</loc> <loc>https://colinknapp.com/stories/nuclear-dns.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/open-source-success.html</loc> <loc>https://colinknapp.com/stories/open-source-success.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/scansnap-webdav.html</loc> <loc>https://colinknapp.com/stories/scansnap-webdav.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/showerloop.html</loc> <loc>https://colinknapp.com/stories/showerloop.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/viperwire.html</loc> <loc>https://colinknapp.com/stories/viperwire.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/web-design-java.html</loc> <loc>https://colinknapp.com/stories/web-design-java.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/wordpress-security.html</loc> <loc>https://colinknapp.com/stories/wordpress-security.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>
<url> <url>
<loc>https://colinknapp.com/stories/youtube-game-dev.html</loc> <loc>https://colinknapp.com/stories/youtube-game-dev.html</loc>
<lastmod>2025-12-01T02:01:35+00:00</lastmod> <lastmod>2025-12-02T18:18:20+00:00</lastmod>
<changefreq>monthly</changefreq> <changefreq>monthly</changefreq>
<priority>0.8</priority> <priority>0.8</priority>
</url> </url>

View File

@ -361,43 +361,14 @@ html[data-theme='dark'] .main-nav a.active {
color: white; color: white;
} }
/* Navigation status indicators */ /* Story status styles */
.main-nav .dropdown-content a .nav-status { .nav-story-written {
font-weight: bold; font-weight: bold !important;
margin-left: 0.25em;
display: inline-block;
} }
.main-nav .dropdown-content a .nav-status.written { .nav-story-tbd {
color: #28a745 !important; /* Green for written stories */ font-weight: normal !important;
} opacity: 0.85;
.main-nav .dropdown-content a .nav-status.not-written {
color: #dc3545 !important; /* Red for unwritten stories */
}
/* Bold story links that are written */
.main-nav .dropdown-content a:has(.nav-status.written) {
font-weight: 700;
}
/* Dark theme support for status indicators */
@media (prefers-color-scheme: dark) {
.main-nav .dropdown-content a .nav-status.written {
color: #4ade80 !important; /* Lighter green for dark theme */
}
.main-nav .dropdown-content a .nav-status.not-written {
color: #f87171 !important; /* Lighter red for dark theme */
}
}
html[data-theme='dark'] .main-nav .dropdown-content a .nav-status.written {
color: #4ade80 !important;
}
html[data-theme='dark'] .main-nav .dropdown-content a .nav-status.not-written {
color: #f87171 !important;
} }
/* Responsive navigation */ /* Responsive navigation */
@ -442,4 +413,4 @@ html[data-theme='dark'] .main-nav .dropdown-content a .nav-status.not-written {
.read-more:hover::after, .read-more:focus::after { .read-more:hover::after, .read-more:focus::after {
transform: translateX(3px); transform: translateX(3px);
} }

View File

@ -64,10 +64,28 @@ async function updateNavFromSitemap() {
// Skip excluded files // Skip excluded files
if (!STORIES_PATH_EXCLUDE.includes(filename)) { if (!STORIES_PATH_EXCLUDE.includes(filename)) {
const filePath = path.join(__dirname, 'stories', filename);
let isWritten = true;
try {
if (fs.existsSync(filePath)) {
const content = fs.readFileSync(filePath, 'utf8');
// Check if the file contains the placeholder notice
if (content.includes('class="placeholder-notice"') || content.includes("class='placeholder-notice'")) {
isWritten = false;
}
} else {
console.warn(`Warning: File not found: ${filePath}`);
}
} catch (err) {
console.warn(`Error reading file ${filePath}: ${err.message}`);
}
storyPages.push({ storyPages.push({
filename, filename,
url: STORIES_PATH_PREFIX + filename, url: STORIES_PATH_PREFIX + filename,
name: getFriendlyName(filename) name: getFriendlyName(filename),
isWritten
}); });
} }
} }
@ -104,7 +122,8 @@ async function updateNavFromSitemap() {
let newDropdownContent = '<div class="dropdown-content">\n'; let newDropdownContent = '<div class="dropdown-content">\n';
storyPages.forEach(page => { storyPages.forEach(page => {
const navId = 'nav-' + page.filename.replace('.html', '').replace(/-/g, ''); const navId = 'nav-' + page.filename.replace('.html', '').replace(/-/g, '');
newDropdownContent += ` <a href="${page.url}" id="${navId}">${page.name}</a>\n`; const className = page.isWritten ? 'nav-story-written' : 'nav-story-tbd';
newDropdownContent += ` <a href="${page.url}" id="${navId}" class="${className}">${page.name}</a>\n`;
}); });
// Replace dropdown content in header.html // Replace dropdown content in header.html