add footer links to all pages
· 1 year ago
bd4bb8d825313d24836b36809738e35d9edf28fe
Parent:
a171ac5dc
14 files changed +160 −242
- airisk.html +14 −8
- bitcoin-exchanges-cards.html +10 −1
- bitcoin-wallet.html +11 −4
- browse.html +0 −178
- buddhism.html +11 −3
- capitalism.html +10 −3
- conscious-leadership-contexts.html +18 −10
- databases.html +10 −2
- index.php +13 −5
- judaism.html +14 −6
- leadership.html +18 −10
- objectivism.html +10 −3
- postgresql.html +10 −3
- versioncontrol.html +11 −6
Diff
--- a/airisk.html +++ b/airisk.html @@ -373,14 +373,20 @@ </div> <!-- /.container --> - <footer class="container text-center text-muted"> - <p>Content based on common AI Safety discourse and resources from organizations like CAIS, FLI, GovAI, MIRI, 80,000 Hours, and research labs.</p> - <p>Layout inspired by the "15 Commitments of Conscious Leadership" cheatsheet template. - <br> Cheatsheet compiled by AI Assistant. © 2025. <!-- Adjust Year --> Please verify information. - </p> - <!-- Suggestion: Link to the project/repo if this is hosted somewhere --> - <!-- <p><a href="YOUR_PROJECT_LINK_HERE" target="_blank" rel="noopener">Project Repository</a></p> --> - </footer> +<footer class="container text-center text-muted pb-3"> + <p>Content based on common AI Safety discourse and resources from organizations like CAIS, FLI, GovAI, MIRI, 80,000 Hours, and research labs.</p> + <p class="mb-2">Layout inspired by the "15 Commitments of Conscious Leadership" cheatsheet template. + <br> Cheatsheet compiled by AI Assistant. © 2025. Please verify information. + </p> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> + </div> +</footer> <!-- === JAVASCRIPT === --> <!-- Bootstrap JS Bundle (needed for tooltips) --> --- a/bitcoin-exchanges-cards.html +++ b/bitcoin-exchanges-cards.html @@ -878,9 +878,18 @@ </div> <!-- /container --> <footer class="container text-center"> - <p id="footer-year"></p> <!-- Footer text set by JS --> + <p class="mb-2">© 2025 David Veksler</p> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> + </div> </footer> + <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> <script> document.addEventListener('DOMContentLoaded', () => { --- a/bitcoin-wallet.html +++ b/bitcoin-wallet.html @@ -4057,10 +4057,17 @@ </div> <!-- /container --> - <footer class="container text-center"> - <p id="footer-year"></p> - <!-- Footer text set by JS --> - </footer> +<footer class="container text-center"> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> + </div> +</footer> + <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> <script> --- a/browse.html +++ /dev/null @@ -1,178 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Cheatsheet Browser - DavidVeksler.com</title> - <link rel="canonical" href="https://cheatsheets.davidveksler.com/browse.html"> - - <!-- Bootstrap CSS --> - <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"> - - <style> - /* Style for the iframe container to maintain aspect ratio or fixed height */ - .iframe-container { - position: relative; - overflow: hidden; - width: 100%; - height: 400px; /* Fixed height for preview */ - border: 1px solid #dee2e6; /* Add a light border around iframe area */ - } - - .iframe-container iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; - } - .card-title-link { - text-decoration: none; - color: inherit; - } - .card-title-link:hover { - text-decoration: underline; - } - </style> -</head> -<body> - <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> - <div class="container"> - <a class="navbar-brand" href="/">DavidVeksler.com Cheatsheets</a> - </div> - </nav> - - <div class="container mt-4"> - <h1 class="mb-4">Browse Cheatsheets</h1> - - <div id="loading-indicator" class="alert alert-info"> - Loading cheatsheet index... - </div> - - <div id="error-indicator" class="alert alert-danger d-none"> - <!-- Error messages will be placed here --> - </div> - - <div id="cheatsheet-gallery" class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4"> - <!-- Gallery items will be inserted here by JavaScript --> - </div> - </div> - - <footer class="py-4 mt-5 bg-light text-center"> - <div class="container"> - <span class="text-muted">Cheatsheets by David Veksler</span> - </div> - </footer> - - <!-- Bootstrap Bundle with Popper --> - <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> - - <script> - document.addEventListener('DOMContentLoaded', () => { - const galleryContainer = document.getElementById('cheatsheet-gallery'); - const loadingIndicator = document.getElementById('loading-indicator'); - const errorIndicator = document.getElementById('error-indicator'); - const directoryUrl = '/'; // Fetch from the root of the current domain - // Alternatively, use absolute URL: const directoryUrl = 'https://cheatsheets.davidveksler.com/'; - const baseHref = window.location.origin + window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/') + 1); // Base URL for resolving relative links - - // Files/directories to exclude from the gallery - const excludedItems = [ - '../', - 'images/', - 'LICENSE', - 'README.md', - 'browse.html', // Exclude this page itself - 'safety_data.js' // Exclude non-html files explicitly if needed - ]; - - fetch(directoryUrl) - .then(response => { - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status} ${response.statusText}`); - } - return response.text(); - }) - .then(html => { - loadingIndicator.classList.add('d-none'); // Hide loading indicator - const parser = new DOMParser(); - const doc = parser.parseFromString(html, 'text/html'); - const links = doc.querySelectorAll('pre a'); // Links are within <pre> in the example - - let foundCheatsheets = false; - - links.forEach(link => { - const href = link.getAttribute('href'); - const linkText = link.textContent.trim(); - - // Basic filtering: must end with .html and not be in the excluded list - if (href && href.endsWith('.html') && !excludedItems.includes(href)) { - foundCheatsheets = true; - const fullUrl = new URL(href, baseHref).href; // Construct full URL - - // Create a user-friendly title from the filename - let title = href.replace('.html', ''); - title = title.replace(/[-_]/g, ' '); // Replace hyphens/underscores with spaces - title = title.charAt(0).toUpperCase() + title.slice(1); // Capitalize first letter - - // Create Bootstrap Card element - const cardCol = document.createElement('div'); - cardCol.className = 'col'; // Bootstrap handles column distribution - - const card = document.createElement('div'); - card.className = 'card h-100 shadow-sm'; // h-100 for equal height cards in a row - - const cardHeader = document.createElement('div'); - cardHeader.className = 'card-header'; - // Link the title to the actual page, opening in a new tab - cardHeader.innerHTML = `<h5 class="card-title mb-0"><a href="${fullUrl}" target="_blank" class="card-title-link">${title}</a></h5>`; - - const cardBody = document.createElement('div'); - cardBody.className = 'card-body p-0'; // No padding to let iframe fill it - - const iframeContainer = document.createElement('div'); - iframeContainer.className = 'iframe-container'; - - const iframe = document.createElement('iframe'); - iframe.setAttribute('src', fullUrl); - iframe.setAttribute('title', `Preview of ${title} Cheatsheet`); - iframe.setAttribute('loading', 'lazy'); // Lazy load iframes for performance - // iframe.setAttribute('sandbox', 'allow-scripts allow-same-origin'); // Optional: sandbox for security, might break cheatsheet functionality - iframe.style.border = '0'; // Ensure no border via style attribute too - - iframeContainer.appendChild(iframe); - cardBody.appendChild(iframeContainer); - - const cardFooter = document.createElement('div'); - cardFooter.className = 'card-footer text-center'; - cardFooter.innerHTML = `<a href="${fullUrl}" target="_blank" class="btn btn-sm btn-outline-primary">Open Full Page</a>`; - - card.appendChild(cardHeader); - card.appendChild(cardBody); - card.appendChild(cardFooter); - cardCol.appendChild(card); - galleryContainer.appendChild(cardCol); - } - }); - - if (!foundCheatsheets) { - showError('No cheatsheet HTML files found in the directory index.'); - } - - }) - .catch(error => { - console.error('Error fetching or parsing directory index:', error); - loadingIndicator.classList.add('d-none'); - showError(`Failed to load cheatsheets: ${error.message}. Please check the console for details.`); - }); - - function showError(message) { - errorIndicator.textContent = message; - errorIndicator.classList.remove('d-none'); - } - }); - </script> - -</body> -</html> \ No newline at end of file --- a/buddhism.html +++ b/buddhism.html @@ -286,9 +286,17 @@ </div> </div> </div> - <footer class="container text-center text-muted"> - <p>© 2025 Buddhist Principles Overview. Info from Access to Insight, SuttaCentral, Wikipedia, etc.</p> - </footer> +<footer class="container text-center text-muted pb-3"> + <p class="mb-2">© 2025 Buddhist Principles Overview. Info from Access to Insight, SuttaCentral, Wikipedia, etc.</p> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> + </div> +</footer> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> <!-- Removed Vanilla Tilt JS --> <script> --- a/capitalism.html +++ b/capitalism.html @@ -346,9 +346,16 @@ </div> </div> -<footer> - <p>This cheatsheet reflects a strong pro-capitalist viewpoint. Always consult diverse sources for a balanced understanding.</p> - <p>© 2025 Generated by AI Assistant.</p> +<footer class="container text-center pb-3"> + <p class="mb-2">© 2025 David Veksler</p> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> + </div> </footer> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> --- a/conscious-leadership-contexts.html +++ b/conscious-leadership-contexts.html @@ -467,16 +467,24 @@ </div> <!-- /.row --> </div> <!-- /.container --> - <footer class="container text-center"> - <p> - This table summarizes the "Four Contexts" from <a href="https://conscious.is/the-15-commitments" target="_blank" rel="noopener noreferrer">The 15 Commitments of Conscious Leadership</a> by Jim Dethmer, Diana Chapman, & Kaley Warner Klemp. - </p> - <p> - For a summary of the core commitments, see the <a href="https://cheatsheets.davidveksler.com/leadership.html" target="_blank" rel="noopener noreferrer">Full 15 Commitments Cheatsheet</a>. - </p> - <p>Visit the <a href="https://conscious.is/" target="_blank" rel="noopener noreferrer">Conscious Leadership Group</a> | Buy the <a href="https://www.amazon.com/15-Commitments-Conscious-Leadership-Sustainable/dp/0990976904" target="_blank" rel="noopener noreferrer">Book</a></p> - <p>Adapted from prior summaries & the main cheatsheet by David Veksler. © 2025 David Veksler. Please verify with primary sources.</p> - </footer> + <footer class="container text-center pb-3"> + <p> + This table summarizes the "Four Contexts" from <a href="https://conscious.is/the-15-commitments" target="_blank" rel="noopener noreferrer">The 15 Commitments of Conscious Leadership</a> by Jim Dethmer, Diana Chapman, & Kaley Warner Klemp. + </p> + <p> + For a summary of the core commitments, see the <a href="https://cheatsheets.davidveksler.com/leadership.html" target="_blank" rel="noopener noreferrer">Full 15 Commitments Cheatsheet</a>. + </p> + <p>Visit the <a href="https://conscious.is/" target="_blank" rel="noopener noreferrer">Conscious Leadership Group</a> | Buy the <a href="https://www.amazon.com/15-Commitments-Conscious-Leadership-Sustainable/dp/0990976904" target="_blank" rel="noopener noreferrer">Book</a></p> + <p class="mb-2">Adapted from prior summaries & the main cheatsheet by David Veksler. © 2025 David Veksler. Please verify with primary sources.</p> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> + </div> +</footer> <!-- === JAVASCRIPT === --> <!-- Bootstrap JS Bundle (needed for tooltips) --> --- a/databases.html +++ b/databases.html @@ -1317,8 +1317,16 @@ </div> <!-- /container --> -<footer class="container text-center"> - <p>© 2025 David Veksler <!-- Or use dynamic year --></p> +<footer class="container text-center pb-3"> + <p class="mb-2">© 2025 David Veksler</p> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> + </div> </footer> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> --- a/index.php +++ b/index.php @@ -345,13 +345,21 @@ try { <?php endif; ?> </main> - <footer class="footer py-4 mt-auto border-top"> - <div class="container text-center"> + <footer class="footer pb-3 mt-auto border-top"> + <div class="container text-center"> + <p class="mb-2"> <span class="text-muted">Cheatsheets by David Veksler © <?php echo date("Y"); ?></span> - <!-- Optional: Add links --> - <!-- <small class="d-block mt-2"><a href="#">About</a> | <a href="#">Contact</a></small> --> + </p> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> </div> - </footer> + </div> +</footer> <!-- Bootstrap Bundle with Popper --> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> --- a/judaism.html +++ b/judaism.html @@ -3047,12 +3047,20 @@ </div> </div> </div> - <footer class="container text-center"> - <p> - © 2025 David Veksler · Compiled & expanded based on Tanakh, Talmud, classic commentators, and standard Jewish - practice. Consult a qualified rabbi or scholar for definitive guidance. - </p> - </footer> + <footer class="container text-center pb-3"> + <p class="mb-2"> + © 2025 David Veksler · Compiled & expanded based on Tanakh, Talmud, classic commentators, and standard Jewish + practice. Consult a qualified rabbi or scholar for definitive guidance. + </p> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> + </div> +</footer> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> <script> // Hebrew Toggle Functionality --- a/leadership.html +++ b/leadership.html @@ -832,16 +832,24 @@ </div> <!-- /.row --> </div> <!-- /.container --> - <footer class="container text-center"> - <p>Based on <a href="https://conscious.is/the-15-commitments" target="_blank" rel="noopener noreferrer">The 15 Commitments of Conscious Leadership</a> by Jim Dethmer, Diana Chapman, & Kaley Warner Klemp. <br> - Visit the <a href="https://conscious.is/" target="_blank" rel="noopener noreferrer">Conscious Leadership Group</a> | Buy the <a href="https://www.amazon.com/15-Commitments-Conscious-Leadership-Sustainable/dp/0990976904" target="_blank" rel="noopener noreferrer">Book</a> - </p> - <p>Further Reading/Summaries: - <a href="https://readingraphics.com/book-summary-the-15-commitments-of-conscious-leadership/" target="_blank" rel="noopener noreferrer">Readingraphics Summary</a> | - <a href="https://www.20minutebooks.com/the-15-commitments-of-conscious-leadership" target="_blank" rel="noopener noreferrer">20 Minute Books Summary</a> - </p> - <p>Adapted from prior summaries by Human First Works & Selling Sherpa (Sep 2023). <br> © 2025 David Veksler. Please verify information with primary sources.</p> - </footer> +<footer class="container text-center pb-3"> + <p>Based on <a href="https://conscious.is/the-15-commitments" target="_blank" rel="noopener noreferrer">The 15 Commitments of Conscious Leadership</a> by Jim Dethmer, Diana Chapman, & Kaley Warner Klemp. <br> + Visit the <a href="https://conscious.is/" target="_blank" rel="noopener noreferrer">Conscious Leadership Group</a> | Buy the <a href="https://www.amazon.com/15-Commitments-Conscious-Leadership-Sustainable/dp/0990976904" target="_blank" rel="noopener noreferrer">Book</a> + </p> + <p>Further Reading/Summaries: + <a href="https://readingraphics.com/book-summary-the-15-commitments-of-conscious-leadership/" target="_blank" rel="noopener noreferrer">Readingraphics Summary</a> | + <a href="https://www.20minutebooks.com/the-15-commitments-of-conscious-leadership" target="_blank" rel="noopener noreferrer">20 Minute Books Summary</a> + </p> + <p class="mb-2">Adapted from prior summaries by Human First Works & Selling Sherpa (Sep 2023). <br> © 2025 David Veksler. Please verify information with primary sources.</p> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> + </div> +</footer> <!-- JAVASCRIPT --> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> --- a/objectivism.html +++ b/objectivism.html @@ -422,9 +422,16 @@ </div> <!-- /.container-lg --> - <footer class="container"> - <p>Cheatsheet based on the philosophy of Ayn Rand. Structure inspired by user request.</p> - </footer> +<footer class="container text-center pb-3"> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> + </div> +</footer> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> <script> // Ensure DOM is ready before initializing JS components --- a/postgresql.html +++ b/postgresql.html @@ -2569,9 +2569,16 @@ GRANT EXECUTE ON FUNCTION log_action(integer, text) TO app_user;</code></pre> </div> <!-- /container --> -<footer class="container text-center"> - <!-- Updated Year --> - <p>© 2025 David Veksler</p> <!-- UPDATE YEAR AS NEEDED --> +<footer class="container text-center pb-3"> + <p class="mb-2">© 2025 David Veksler</p> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> + </div> </footer> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> --- a/versioncontrol.html +++ b/versioncontrol.html @@ -388,12 +388,17 @@ </div> <!-- /history-container --> - - <footer class="container text-center mt-4 pt-4 pb-5 border-top"> - <!-- Update copyright name and year as appropriate --> - <p class="text-muted small">Cheatsheet content by David Veksler | © 2024</p> - <p class="text-muted small">Requires `history_tree_style.css` for full visual effect.</p> - </footer> +<footer class="container text-center mt-4 pt-4 pb-5 border-top"> + <p class="mb-2">© 2025 David Veksler</p> + <div> + <a href="https://www.linkedin.com/in/davidveksler/" title="David Veksler on LinkedIn" target="_blank" rel="noopener noreferrer" class="mx-2 link-secondary"> + <i class="bi bi-linkedin"></i> LinkedIn + </a> + <a href="https://cheatsheets.davidveksler.com/" title="Browse All Cheatsheets" class="mx-2 link-secondary"> + <i class="bi bi-collection"></i> All Cheatsheets + </a> + </div> +</footer> <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> <script>