You've already forked ProfessionalWebsite
All checks were successful
Publish to Server / Deploy (push) Successful in 52s
Signed-off-by: Alexander Davis <alex@adcm.uk>
728 lines
56 KiB
HTML
728 lines
56 KiB
HTML
<!DOCTYPE html>
|
||
<html data-bs-theme="auto" lang="en-gb">
|
||
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<!-- Matomo -->
|
||
<script>
|
||
var _paq = window._paq = window._paq || [];
|
||
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
|
||
_paq.push(['trackPageView']);
|
||
_paq.push(['enableLinkTracking']);
|
||
(function() {
|
||
var u="//analytics.adcmnetworks.co.uk/";
|
||
_paq.push(['setTrackerUrl', u+'matomo.php']);
|
||
_paq.push(['setSiteId', '1']);
|
||
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
|
||
})();
|
||
</script>
|
||
<!-- End Matomo Code -->
|
||
|
||
<script src="https://kit.fontawesome.com/8970d94f9b.js" crossorigin="anonymous"></script>
|
||
|
||
<meta name="fediverse:creator" content="@MrDavisCSIT@mstdn.social">
|
||
<script src="https://cms.tahdah.me/scripts/publicbadge.js"></script>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||
<title>Marking the Milestone: Mastering the Computing Measure</title>
|
||
<link rel="canonical" href="https://www.mrlyall.uk/posts/marking-the-milestone.html">
|
||
<meta property="og:url" content="https://www.mrlyall.uk/posts/marking-the-milestone.html">
|
||
<meta name="twitter:description" content="The website of Mr. A. Lyall, featuring a portfolio of work in computing education, digital projects, and curriculum resources. Explore blog posts, classroom tools, and professional insights focused on innovation, inclusion, and effective IT teaching.">
|
||
<meta name="twitter:card" content="summary">
|
||
<meta property="og:type" content="website">
|
||
<meta name="twitter:title" content="Mr Lyall">
|
||
<meta property="og:image" content="https://www.mrlyall.uk/assets/img/blog/cqm_badge.webp">
|
||
<meta name="description" content="Note to self: I really need to post here more often! It’s been a whirlwind since my last update. Between chasing rapid grade improvements for our Year 11s, general OFSTED prep, onboarding a new team member, and—yes—rewriting the Key Stage 3 curriculum (again), I’ve completely lost track of time.">
|
||
<script>
|
||
(function() {
|
||
|
||
// JavaScript snippet handling Dark/Light mode switching
|
||
|
||
const getStoredTheme = () => localStorage.getItem('theme');
|
||
const setStoredTheme = theme => localStorage.setItem('theme', theme);
|
||
const forcedTheme = document.documentElement.getAttribute('data-bss-forced-theme');
|
||
|
||
const getPreferredTheme = () => {
|
||
|
||
if (forcedTheme) return forcedTheme;
|
||
|
||
const storedTheme = getStoredTheme();
|
||
if (storedTheme) {
|
||
return storedTheme;
|
||
}
|
||
|
||
const pageTheme = document.documentElement.getAttribute('data-bs-theme');
|
||
|
||
if (pageTheme) {
|
||
return pageTheme;
|
||
}
|
||
|
||
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
||
}
|
||
|
||
const setTheme = theme => {
|
||
if (theme === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||
document.documentElement.setAttribute('data-bs-theme', 'dark');
|
||
} else {
|
||
document.documentElement.setAttribute('data-bs-theme', theme);
|
||
}
|
||
}
|
||
|
||
setTheme(getPreferredTheme());
|
||
|
||
const showActiveTheme = (theme, focus = false) => {
|
||
const themeSwitchers = [].slice.call(document.querySelectorAll('.theme-switcher'));
|
||
|
||
if (!themeSwitchers.length) return;
|
||
|
||
document.querySelectorAll('[data-bs-theme-value]').forEach(element => {
|
||
element.classList.remove('active');
|
||
element.setAttribute('aria-pressed', 'false');
|
||
});
|
||
|
||
for (const themeSwitcher of themeSwitchers) {
|
||
|
||
const btnToActivate = themeSwitcher.querySelector('[data-bs-theme-value="' + theme + '"]');
|
||
|
||
if (btnToActivate) {
|
||
btnToActivate.classList.add('active');
|
||
btnToActivate.setAttribute('aria-pressed', 'true');
|
||
}
|
||
}
|
||
}
|
||
|
||
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
||
const storedTheme = getStoredTheme();
|
||
if (storedTheme !== 'light' && storedTheme !== 'dark') {
|
||
setTheme(getPreferredTheme());
|
||
}
|
||
});
|
||
|
||
window.addEventListener('DOMContentLoaded', () => {
|
||
showActiveTheme(getPreferredTheme());
|
||
|
||
document.querySelectorAll('[data-bs-theme-value]')
|
||
.forEach(toggle => {
|
||
toggle.addEventListener('click', (e) => {
|
||
e.preventDefault();
|
||
const theme = toggle.getAttribute('data-bs-theme-value');
|
||
setStoredTheme(theme);
|
||
setTheme(theme);
|
||
showActiveTheme(theme);
|
||
})
|
||
})
|
||
});
|
||
})();
|
||
</script>
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_accent.webp?h=62dbf084286026c4b6de08d0203df501">
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_white.webp?h=7cd31e9469bb0f9d3a4e704b3c0b1445" media="(prefers-color-scheme: dark)">
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_accent.webp?h=62dbf084286026c4b6de08d0203df501">
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_white.webp?h=7cd31e9469bb0f9d3a4e704b3c0b1445" media="(prefers-color-scheme: dark)">
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_accent.webp?h=62dbf084286026c4b6de08d0203df501">
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_accent.webp?h=62dbf084286026c4b6de08d0203df501">
|
||
<link rel="icon" type="image/png" sizes="4860x4860" href="../assets/img/brand/adcm_logo_accent.webp?h=62dbf084286026c4b6de08d0203df501">
|
||
<link rel="stylesheet" href="../assets/bootstrap/css/bootstrap.min.css?h=c9d969cca6f72ca8d4dfd457f2e8eff8">
|
||
<link rel="stylesheet" href="../assets/css/Lato.css?h=4cf0101c9fb4e71821a619e3490ba3db">
|
||
<link rel="stylesheet" href="../assets/css/bss-overrides.css?h=15b91a8988c8fc6448a8989802a159de">
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css">
|
||
<link rel="stylesheet" href="../assets/css/styles.css?h=7c67e1bb3df4cb41abaceaf312f03dfa">
|
||
<link rel="stylesheet" href="../assets/css/pikaday.min.css?h=a9ab8ca627aa6e8f64b730ca9c2c781d">
|
||
<link rel="stylesheet" href="../assets/css/CookieConsentComponent.css?h=39af3305e95f4d2a8883e97d7e0cdb14">
|
||
<link rel="stylesheet" href="../assets/css/animations.compiled.css?h=49917e33fe831aa33e24fb1e8124fdd9">
|
||
<link rel="stylesheet" href="../assets/css/Carousel---Slider-With-Animation.css?h=63f5768f05d2ae91446ac010bcd4844a">
|
||
</head>
|
||
|
||
<body>
|
||
<nav class="navbar navbar-expand-md fixed-top portfolio-navbar gradient navbar-dark">
|
||
<div class="container-fluid"><a class="navbar-brand logo" href="../../"><img alt="Stylised white microchip icon on a black background, designed as a modern tech-themed logo for ADCM" src="../assets/img/brand/adcm_logo_white.webp?h=7cd31e9469bb0f9d3a4e704b3c0b1445" width="50" height="50" class="mobile-padding-left"></a><button data-bs-toggle="collapse" class="navbar-toggler" data-bs-target="#navbarNav" style="margin-right: 0.5em;"><span class="visually-hidden">Toggle navigation</span><span class="navbar-toggler-icon"></span></button>
|
||
<div class="collapse navbar-collapse" id="navbarNav">
|
||
<ul class="navbar-nav ms-auto">
|
||
<li class="nav-item mobile-padding-left"><a class="nav-link" href="../../">Home</a></li>
|
||
<li class="nav-item mobile-padding-left"><a class="nav-link" href="../../about">About</a></li>
|
||
<li class="nav-item mobile-padding-left"><a class="nav-link" href="../../projects">My Work</a></li>
|
||
<li class="nav-item mobile-padding-left"><a class="nav-link" href="../../my-work/showreel">Showreel</a></li>
|
||
<li class="nav-item mobile-padding-left"><a class="nav-link" href="../../blog">Blog</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
<main class="page">
|
||
<section class="blog-block project portfolio-block">
|
||
<div class="container center-everything">
|
||
<!-- Start: blog heading -->
|
||
<div class="align-content-center heading blog-heading milestone">
|
||
<h2>Marking the Milestone: Mastering the Computing Measure</h2><time class="fs-5" datetime="2025-04-12">12 Apr 2025</time>
|
||
</div><!-- End: blog heading -->
|
||
<div class="alert alert-warning" role="alert"><span><strong>Note to self:</strong></span>
|
||
<p class="no-margin">I really need to post here more often! It’s been a whirlwind since my last update. Between chasing rapid grade improvements for our Year 11s, general OFSTED prep, onboarding a new team member, and—yes—rewriting the Key Stage 3 curriculum (again), I’ve completely lost track of time.</p>
|
||
</div>
|
||
<p>As ever, there's been a lot going on. That said, I’m seeing some encouraging signs: staff morale in the department is slowly but steadily on the rise. There’s still work to do, but we’re heading in the right direction. Our ongoing review of the Key Stage 4 curriculum is showing promising results too—early predictions for Year 10 outcomes suggest we’re building on the progress made with our outgoing Year 11s.<br><br>Behaviour-wise, the picture hasn’t been so rosy. Like many schools, we’ve seen an increase in challenges across both year groups. That said, we did get a bit of unexpected recognition—we were featured in a Channel 5 News story for "bucking the trend" on student behaviour. Nice to have some good news, even if it came from a surprising source.<br><br>But here’s the big one—the department achieved something huge recently: we’ve been awarded the Computing Quality Mark! 🎉</p>
|
||
<div class="post-images"><img alt="The Computing Quality Mark badge for the School Framework Award 2024–25, featuring a geometric green and black logo." class="blog-image-container" src="../assets/img/blog/cqm_badge.webp?h=06a4655e63f99c242a43066a66fc492d"></div>
|
||
<p>That makes us the second secondary school in the West Midlands to achieve it. It’s an external acknowledgment that what we do for our students—our curriculum design, our delivery, our intent—is aligned with what OFSTED would classify as at least Good. It’s a massive win for the team.<br><br>And yet… not a word from the headteacher. Not in a briefing, not in a staff bulletin—nothing. Meanwhile, at the end-of-term lunch, there was a whole speech about how OFSTED are “likely” to visit in the first few weeks back. That got all the airtime, while a nationally recognised mark of curriculum quality earned by the department? Radio silence. It’s frustrating, to say the least. I’ll leave it alone for now, but I do wonder how long it'll be before someone outside the department brings it up to SLT or the wider staff body.<br><br>Coming up next: we hit the ground running straight after Easter. Year 11s have their first exam the Thursday we return, so we’re hosting Easter revision sessions to give them the best shot at success in a supportive environment. I’m also planning pre-exam intervention sessions (two hours before the exam), and working out how we staff the Paper 2 exam in late May.<br><br>That last bit’s a delicate one—there’s often an assumption that staff are in the room to "support the students," but that’s not quite the case. I’ll need to have some tactful conversations to make sure expectations are clear without anyone feeling undermined.<br><br>And finally—I've been out visiting one of our feeder schools. Wow. That was a challenge. I'm tempted to write a separate post about it. But the short version? Digital literacy is clearly not a priority in many primary settings. Some of what I saw and heard made it crystal clear that we’re likely to face growing gaps in e-safety knowledge and digital skills among incoming Year 7s. Something to keep an eye on…</p>
|
||
<div data-bss-type="blog-loop" class="loop-padding">
|
||
<div class="row" data-bss-type="blog-loop-base">
|
||
<div class="col post-tag-aspirations post-tag-goals post-tag-career post-author-mr-a-lyall" data-bss-type="blog-loop-item">
|
||
<div class="card"><a href="the-split-up.html"><img alt="stack of jigsaw puzzle pieces" class="card-img-top rainbow-border blog-loop-img" src="../assets/img/blog/break-up.jpg?h=2583aa574343007bfcdc91dcbad2cd32"></a>
|
||
<div class="card-body"><a href="the-split-up.html">
|
||
<h4 class="text-body">The Split Up</h4>
|
||
</a><time datetime="2025-12-14">14 Dec 2025</time>
|
||
<p class="card-text">A short simple update on system migration...</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col post-tag-aspirations post-tag-goals post-tag-career post-author-mr-a-lyall" data-bss-type="blog-loop-item">
|
||
<div class="card"><a href="the-migration-process.html"><img alt="flying airliner in sky" class="card-img-top rainbow-border blog-loop-img" src="../assets/img/blog/migration-process.webp?h=e112f60ecc785c0dfc809a62dd3a356f"></a>
|
||
<div class="card-body"><a href="the-migration-process.html">
|
||
<h4 class="text-body">The Migration Process</h4>
|
||
</a><time datetime="2025-10-27">27 Oct 2025</time>
|
||
<p class="card-text">After a year of big changes: marriage, a name change, and the end of my NPQLT. I’ve started migrating every part of my digital life. From leaving the Apple ecosystem to rebuilding my online presence under mrlyall.co.uk, this post dives into what’s changing, what’s staying, and why it’s time for the Davis identity to be gracefully relegated. Same me, just a little more Lyall-logical.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col post-tag-aspirations post-tag-goals post-tag-career post-author-mr-a-lyall" data-bss-type="blog-loop-item">
|
||
<div class="card"><a href="clearing-the-clutter.html"><img alt="A chaotic pile of assorted tools including scissors, hammers, knives, and screwdrivers, representing disorganisation or overload." class="card-img-top rainbow-border blog-loop-img" src="../assets/img/blog/clearing_the_clutter.webp?h=663b94419c9fd6cac937ef9f663fc013"></a>
|
||
<div class="card-body"><a href="clearing-the-clutter.html">
|
||
<h4 class="text-body">Clearing the Clutter: A Digital and Personal Reset</h4>
|
||
</a><time datetime="2025-05-26">26 May 2025</time>
|
||
<p class="card-text">I’ve been wanting to do something like this for a few years now, and this finally seems like the right time to take action.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</main><!-- Start: Footer Multi Column -->
|
||
<footer class="text-body bg-body" id="Light-Footer">
|
||
<div class="container py-4 py-lg-5 center-everything">
|
||
<div class="row justify-content-center">
|
||
<!-- Start: Accreditations -->
|
||
<div class="col-sm-3 col-md-6 text-center text-lg-start d-none d-sm-none d-md-none d-lg-flex flex-column">
|
||
<h3 class="fs-6 text-center text-body accreditations-title">Accreditations</h3>
|
||
<div class="swiper text-body w-100" id="light-swiper" data-bss-swiper="{"direction":"horizontal","loop":true,"autoplay":{"pauseOnMouseEnter":true},"autoHeight":true,"effect":"fade","fadeEffect":{"crossFade":true}}">
|
||
<div class="swiper-wrapper">
|
||
<!-- Start: Mountain Training -->
|
||
<div class="swiper-slide d-flex justify-content-center center-everything">
|
||
<div class="tahdah-badge" data-candidateid="1466454"></div>
|
||
</div><!-- End: Mountain Training -->
|
||
<!-- Start: Canva Essentials -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/canva-essentials" target="_blank"><img class="img-fluid w-100 accreditation" width="692" height="692" src="../assets/img/accreditations/canva-essentials-badge.webp?h=bc157efb7620e733f43b4b00981978ea"></a></div><!-- End: Canva Essentials -->
|
||
<!-- Start: Canva Essentials for Mobile -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/canva-essentials-mobile" target="_blank"><img class="img-fluid w-100 accreditation" width="692" height="692" src="../assets/img/accreditations/canva-essentials-for-mobile-badge.webp?h=93513f8f560a2e346c12aeb9fb0c18ec"></a></div><!-- End: Canva Essentials for Mobile -->
|
||
<!-- Start: Canva Graphic Design Essentials -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/graphic-design-essentials" target="_blank"><img class="img-fluid w-100 accreditation" width="692" height="692" src="../assets/img/accreditations/graphic-design-essentials-badge.webp?h=f5406331e45433f0d8bd6b929f9d113b"></a></div><!-- End: Canva Graphic Design Essentials -->
|
||
<!-- Start: Marketing with Canva -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/marketing-with-canva" target="_blank"><img class="img-fluid w-100 accreditation" width="1080" height="1080" src="../assets/img/accreditations/mr-a-davis-marketing-with-canva-badge.webp?h=f0b802da597c825b7e03378130d94aca"></a></div><!-- End: Marketing with Canva -->
|
||
<!-- Start: Canva for Work -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/canva-for-work" target="_blank"><img class="img-fluid w-100 accreditation" width="2160" height="2160" src="../assets/img/accreditations/mr-a-davis-canva-for-work-badge.webp?h=b3617633e9d2de429288704f75b304f4"></a></div><!-- End: Canva for Work -->
|
||
<!-- Start: Canva Teacher Essentials -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/teacher-essentials" target="_blank"><img class="img-fluid w-100 accreditation" width="692" height="692" src="../assets/img/accreditations/teacher-essentials-badge.webp?h=d2d6f962e0b1bbebc68f987d6f156028"></a></div><!-- End: Canva Teacher Essentials -->
|
||
<!-- Start: Canva AI in the Classroom -->
|
||
<div class="swiper-slide"><a href="https://www.canva.com/design-school/courses/ai-in-the-classroom" target="_blank"><img class="img-fluid w-100 accreditation" width="1080" height="1080" src="../assets/img/accreditations/ai-in-the-classroom-badge.webp?h=769458ef2c323729c209855a3cde7312"></a></div><!-- End: Canva AI in the Classroom -->
|
||
<!-- Start: Adobe Creative Educator Level 1 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/3a49b473-4af9-4c5a-ab38-1c754f181c6e/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Adobe Creative Educator Level 1"" width="600" height="600" src="../assets/img/accreditations/3_hours_adobe_creative_educator_level_1.webp?h=45de0c4e8984e885b1153e344e794beb"></a></div><!-- End: Adobe Creative Educator Level 1 -->
|
||
<!-- Start: Minecraft Education -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/53745c80-7d0a-4428-906a-839e905c139c/public_url" target="_blank"><img class="img-fluid w-100 accreditation" width="600" height="600" src="../assets/img/accreditations/minecraft-education-ambassador.webp?h=5c614dffa9ab6d6fd77cd805b8397ffd"></a></div><!-- End: Minecraft Education -->
|
||
<!-- Start: MCE -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/9c9dd6cd-2703-4539-adc9-366069cbc3a9/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " MCE: Microsoft Certified Educator"" width="352" height="352" src="../assets/img/accreditations/mce_microsoft_certified_educator.webp?h=3e67f154a356cd1ef15c31b0fb42c0c4"></a></div><!-- End: MCE -->
|
||
<!-- Start: MIEE 2023-2024 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/b5ac17a1-0914-496f-9d85-9608966259ee/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Innovative Educator Expert 2023-2024"" width="600" height="600" src="../assets/img/accreditations/microsoft_innovative_educator_expert_2023_2024.webp?h=ee882aefba64b3e5b8ea9554eeea3847"></a></div><!-- End: MIEE 2023-2024 -->
|
||
<!-- Start: MIEE 2024-2025 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/ad92a7cb-3e4f-46e2-8e73-99dffd0eb69e/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Innovative Educator Expert 2024-2025"" width="600" height="600" src="../assets/img/accreditations/microsoft_innovative_educator_expert_2024_2025.webp?h=a0b5cb2a639caf0351a977146375667e"></a></div><!-- End: MIEE 2024-2025 -->
|
||
<!-- Start: Pearson OSA Expert -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/44756f05-e727-41c8-a352-a656c033c9f0/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Onscreen Assessment Expert GCSE Computer Science"" width="800" height="800" src="../assets/img/accreditations/pearson_onscreen_assessment_expert.webp?h=d4e00ea5bfad5a66c619238d7cbdd8db"></a></div><!-- End: Pearson OSA Expert -->
|
||
<!-- Start: STEM 21-22 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/52121ef6-0760-4870-91cc-1cb20001238b/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Establishing a STEM club - from creation to careers 2021/2022"" width="1200" height="1200" src="../assets/img/accreditations/establishing_a_stem_club_from_creation_to_careers_2021_2022.webp?h=7f96a591bd4fb09f86da96af8a8a41ef"></a></div><!-- End: STEM 21-22 -->
|
||
<!-- Start: NCCE Secondary 21-22 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/60d50339-2dda-4991-90b5-7ff087975746/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Secondary Computer Science - Professional Development 2021-2022"" width="1200" height="1200" src="../assets/img/accreditations/secondary_computer_science_professional_development_2021_2022.webp?h=813dd91393f904969bc3bf184007c8c2"></a></div><!-- End: NCCE Secondary 21-22 -->
|
||
<!-- Start: NCCE Secondary 23-24 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/e74f9011-4006-4570-824a-f483fdcb5b26/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Secondary Computing - Professional Development 2023-2024"" width="600" height="600" src="../assets/img/accreditations/secondary_computing_professional_development_2023_2.webp?h=77ebf2880eb7d342016b83e098d92d23"></a></div><!-- End: NCCE Secondary 23-24 -->
|
||
<!-- Start: NCCE GCSE Computer Science 19-20 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/c73720d2-8208-4e2b-a1e5-c473961834d9/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " GCSE Computer Science: Professional Development 2019-2020"" width="1200" height="1200" src="../assets/img/accreditations/gcse_computer_science_professional_development_2019_2020.webp?h=fef2cee3326aeff9e2f65e86cf5e4fee"></a></div><!-- End: NCCE GCSE Computer Science 19-20 -->
|
||
<!-- Start: NCCE GCSE Computer Science 23-24 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/c486279a-8e97-4779-90c1-56f09622e782/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " GCSE Computer Science - Professional Development 2022-2023"" width="2000" height="2000" src="../assets/img/accreditations/gcse_computer_science_professional_development_2022_2023.webp?h=0a54c55717b61c0a0b4ed80582d7bfae"></a></div><!-- End: NCCE GCSE Computer Science 23-24 -->
|
||
<!-- Start: NCCE GCSE Computer Science 23-24 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/e76ed57f-2270-47f5-8e7e-4136baa261f3/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " GCSE Computer Science - Professional Development 2023-2024"" width="600" height="600" src="../assets/img/accreditations/gcse_computer_science_professional_development_2023.webp?h=71b8c59772af539946fb49a210b05758"></a></div><!-- End: NCCE GCSE Computer Science 23-24 -->
|
||
<!-- Start: NCCE A Level Computer Science 23-24 -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/418cfb22-3e37-4b24-b527-652b1ab6ea76/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " A-Level Computer Science - Professional Development 2023-2024"" width="600" height="600" src="../assets/img/accreditations/a_level_computer_science_professional_development.webp?h=a9cc6f73abdf82ab49e5f8a8695cb557"></a></div><!-- End: NCCE A Level Computer Science 23-24 -->
|
||
<!-- Start: MOS Master -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/0e46d6b8-1a1b-4d16-a5d5-3b95661fb290/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Office Specialist: Master 2013"" width="352" height="352" src="../assets/img/accreditations/microsoft_office_specialist_master_2013.webp?h=70d957a5307d38f46b84b6462439afbc"></a></div><!-- End: MOS Master -->
|
||
<!-- Start: MOS Word Expert -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/287d0ca4-bea1-4e18-b9e7-21f6a5d5d571/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Office Specialist: Word 2013 Expert"" width="352" height="352" src="../assets/img/accreditations/microsoft_office_specialist_word_2013_expert.webp?h=5bd4ec8c82587201172a8b8e460ff4e6"></a></div><!-- End: MOS Word Expert -->
|
||
<!-- Start: MOS Word -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/f1831f0e-776b-49aa-8a8d-05817d4b1410/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Office Specialist: Word 2013"" width="352" height="352" src="../assets/img/accreditations/microsoft_office_specialist_word_2013.webp?h=2b90c5590b7b50f1891a9116fa38ac36"></a></div><!-- End: MOS Word -->
|
||
<!-- Start: MOS Excel -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/2ab55353-3267-46cc-b3f4-3099af54d869/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Office Specialist: Excel 2013"" width="352" height="352" src="../assets/img/accreditations/microsoft_office_specialist_excel_2013.webp?h=f016925633d0a52b862259a05b396b6a"></a></div><!-- End: MOS Excel -->
|
||
<!-- Start: MOS PowerPoint -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/11162aa2-331a-4ec4-a612-665f3bc59cb1/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Office Specialist: PowerPoint 2013"" width="352" height="352" src="../assets/img/accreditations/microsoft_office_specialist_powerpoint_2013.webp?h=26de9623c491661347998549e10d4353"></a></div><!-- End: MOS PowerPoint -->
|
||
<!-- Start: MOS OneNote -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/cd328b1d-27b6-4410-be70-0792a99b72ea/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " Microsoft Office Specialist: OneNote 2013"" width="352" height="352" src="../assets/img/accreditations/microsoft_office_specialist_onenote_2013.webp?h=2ffe41c2a6e37d602469f8158ef13d79"></a></div><!-- End: MOS OneNote -->
|
||
<!-- Start: MTA Security -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/da3b3b4c-cec4-4537-bb5b-486ce9ee6ee7/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " MTA: Security Fundamentals - Certified 2016"" width="352" height="352" src="../assets/img/accreditations/mta_security_fundamentals_certified_2016.webp?h=0df619419a5b6d0eb694dc9363870b20"></a></div><!-- End: MTA Security -->
|
||
<!-- Start: MTA Networking -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/23194bfe-30e4-4f8e-b9ec-338d060136dd/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " MTA: Networking Fundamentals - Certified 2016"" width="352" height="352" src="../assets/img/accreditations/mta_networking_fundamentals_certified_2016.webp?h=cdc4618c5e86d11aa304cae14c3942bc"></a></div><!-- End: MTA Networking -->
|
||
<!-- Start: MTA Windows OS -->
|
||
<div class="swiper-slide"><a href="https://www.credly.com/badges/f0f27d87-424b-49e8-a444-95086d640e66/public_url" target="_blank"><img class="img-fluid w-100 accreditation" alt="Accreditation badge for: " MTA: Windows Operating System Fundamentals - Certified 2016"" width="352" height="352" src="../assets/img/accreditations/mta_windows_operating_system_fundamentals_certified_2016.webp?h=44a6360480ef67ced301c697d31f9fa5"></a></div><!-- End: MTA Windows OS -->
|
||
</div>
|
||
</div>
|
||
<div class="swiper-nav-standalone d-flex justify-content-center accreditations-navigation" data-bss-swiper-target="#light-swiper">
|
||
<div class="swiper-button-prev"><button class="btn btn-primary btn-sm" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-arrow-left">
|
||
<path fill-rule="evenodd" d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8"></path>
|
||
</svg></button></div>
|
||
<div class="swiper-button-next"><button class="btn btn-primary btn-sm" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-arrow-right">
|
||
<path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8"></path>
|
||
</svg></button></div>
|
||
</div>
|
||
</div><!-- End: Accreditations -->
|
||
<!-- Start: Spacer -->
|
||
<div class="col-md-3 text-center text-lg-start d-flex flex-column"><a class="d-flex w-100 justify-content-center center-everything" href="https://client.brixly.uk/aff.php?aff=837" target="_blank"><img class="img-fluid object-fit-contain w-50" src="https://brixly.uk/wp-content/uploads/2022/06/Artboard-32.jpg"></a></div><!-- End: Spacer -->
|
||
<div class="col-md-3 text-center text-lg-start d-flex flex-column align-items-center order-first align-items-lg-start order-lg-last">
|
||
<div class="fw-bold d-flex align-items-center mb-2"><img alt="Stylised orange microchip icon on a black background, designed as a modern tech-themed logo for ADCM" src="../assets/img/brand/adcm_logo_accent.webp?h=62dbf084286026c4b6de08d0203df501" width="50" height="50" class="footer-logo"><span>Mr A Lyall</span></div>
|
||
<p>IT professional and Head of Computing in the West Midlands</p>
|
||
</div>
|
||
</div>
|
||
<hr>
|
||
<div class="d-flex justify-content-between align-items-center pt-3">
|
||
<p class="mb-0 footer-copyright">Copyright © 2025 ADCM Networks</p>
|
||
<ul class="list-inline mb-0">
|
||
<!-- Start: Mastodon -->
|
||
<li class="list-inline-item"><a rel="me" href="https://mstdn.social/@MrDavisCSIT"><svg class="text-body" xmlns="http://www.w3.org/2000/svg" viewBox="-32 0 512 512" width="1em" height="1em" fill="currentColor">
|
||
<!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. -->
|
||
<path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"></path>
|
||
</svg></a></li><!-- End: Mastodon -->
|
||
<!-- Start: Bluesky -->
|
||
<li class="list-inline-item"><a href="https://bsky.app/profile/adcmnetworks.co.uk"><i class="fa-brands fa-square-bluesky"></i></a></li><!-- End: Bluesky -->
|
||
<!-- Start: LinkedIn -->
|
||
<li class="list-inline-item"><a href="https://www.linkedin.com/in/MrDavisCSIT/"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-linkedin text-body">
|
||
<path d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854V1.146zm4.943 12.248V6.169H2.542v7.225h2.401m-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248-.822 0-1.359.54-1.359 1.248 0 .694.521 1.248 1.327 1.248h.016zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016a5.54 5.54 0 0 1 .016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225h2.4"></path>
|
||
</svg></a></li><!-- End: LinkedIn -->
|
||
<!-- Start: GitHub -->
|
||
<li class="list-inline-item"><a href="https://github.com/MrDavisCSIT"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-github text-body">
|
||
<path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.012 8.012 0 0 0 16 8c0-4.42-3.58-8-8-8"></path>
|
||
</svg></a></li><!-- End: GitHub -->
|
||
<!-- Start: Reddit -->
|
||
<li class="list-inline-item"><a href="https://www.reddit.com/user/AlexanderEDavis95/"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-reddit text-body">
|
||
<path d="M6.167 8a.831.831 0 0 0-.83.83c0 .459.372.84.83.831a.831.831 0 0 0 0-1.661m1.843 3.647c.315 0 1.403-.038 1.976-.611a.232.232 0 0 0 0-.306.213.213 0 0 0-.306 0c-.353.363-1.126.487-1.67.487-.545 0-1.308-.124-1.671-.487a.213.213 0 0 0-.306 0 .213.213 0 0 0 0 .306c.564.563 1.652.61 1.977.61zm.992-2.807c0 .458.373.83.831.83.458 0 .83-.381.83-.83a.831.831 0 0 0-1.66 0z"></path>
|
||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.828-1.165c-.315 0-.602.124-.812.325-.801-.573-1.9-.945-3.121-.993l.534-2.501 1.738.372a.83.83 0 1 0 .83-.869.83.83 0 0 0-.744.468l-1.938-.41a.203.203 0 0 0-.153.028.186.186 0 0 0-.086.134l-.592 2.788c-1.24.038-2.358.41-3.17.992-.21-.2-.496-.324-.81-.324a1.163 1.163 0 0 0-.478 2.224c-.02.115-.029.23-.029.353 0 1.795 2.091 3.256 4.669 3.256 2.577 0 4.668-1.451 4.668-3.256 0-.114-.01-.238-.029-.353.401-.181.688-.592.688-1.069 0-.65-.525-1.165-1.165-1.165z"></path>
|
||
</svg></a></li><!-- End: Reddit -->
|
||
<!-- Start: YouTube -->
|
||
<li class="list-inline-item"><a href="https://www.youtube.com/channel/UCgDhiQMLbTemv2varDiW2rA"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill="currentColor" viewBox="0 0 16 16" class="bi bi-youtube text-body">
|
||
<path d="M8.051 1.999h.089c.822.003 4.987.033 6.11.335a2.01 2.01 0 0 1 1.415 1.42c.101.38.172.883.22 1.402l.01.104.022.26.008.104c.065.914.073 1.77.074 1.957v.075c-.001.194-.01 1.108-.082 2.06l-.008.105-.009.104c-.05.572-.124 1.14-.235 1.558a2.007 2.007 0 0 1-1.415 1.42c-1.16.312-5.569.334-6.18.335h-.142c-.309 0-1.587-.006-2.927-.052l-.17-.006-.087-.004-.171-.007-.171-.007c-1.11-.049-2.167-.128-2.654-.26a2.007 2.007 0 0 1-1.415-1.419c-.111-.417-.185-.986-.235-1.558L.09 9.82l-.008-.104A31.4 31.4 0 0 1 0 7.68v-.123c.002-.215.01-.958.064-1.778l.007-.103.003-.052.008-.104.022-.26.01-.104c.048-.519.119-1.023.22-1.402a2.007 2.007 0 0 1 1.415-1.42c.487-.13 1.544-.21 2.654-.26l.17-.007.172-.006.086-.003.171-.007A99.788 99.788 0 0 1 7.858 2h.193zM6.4 5.209v4.818l4.157-2.408z"></path>
|
||
</svg></a></li><!-- End: YouTube -->
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</footer><!-- End: Footer Multi Column -->
|
||
<script>
|
||
(function() {
|
||
let collections = document.querySelectorAll('[data-bss-type="blog-loop"]');
|
||
let tagNavs = document.querySelectorAll('[data-bss-type="tag-nav"]');
|
||
let tagLoops = document.querySelectorAll('[data-bss-type="tag-loop"]');
|
||
let authorLoops = document.querySelectorAll('[data-bss-type="author-loop"]');
|
||
let authorNavs = document.querySelectorAll('[data-bss-type="author-nav"]');
|
||
|
||
window.addEventListener("popstate", (e) => {
|
||
for (let collection of collections) {
|
||
updateCollection(collection);
|
||
}
|
||
|
||
for (let tagNav of tagNavs) {
|
||
updateTagNav(tagNav);
|
||
}
|
||
|
||
for (let authorNav of authorNavs) {
|
||
updateAuthorNav(authorNav);
|
||
}
|
||
});
|
||
|
||
for (let collection of collections) {
|
||
|
||
updateCollection(collection);
|
||
|
||
if (!canPaginateCollection(collection)) continue;
|
||
|
||
let pagination = collection.querySelector('[data-bss-type="blog-loop-pagination"]');
|
||
|
||
pagination.addEventListener('click', function(e) {
|
||
let paginationItem = e.target.closest('.page-item');
|
||
if (!paginationItem) return;
|
||
|
||
e.preventDefault();
|
||
|
||
if (paginationItem.classList.contains('disabled') || paginationItem.classList.contains('active')) return;
|
||
|
||
let collection = paginationItem.closest('[data-bss-type="blog-loop"]');
|
||
if (!collection) return;
|
||
|
||
let page = parseInt(paginationItem.dataset.page);
|
||
if (!page) return;
|
||
|
||
let pageParam = getPageParameter(collection);
|
||
|
||
if (pageParam) {
|
||
const url = new URL(window.location);
|
||
url.searchParams.set(pageParam, page);
|
||
history.pushState({
|
||
[pageParam]: page
|
||
}, document.title, url);
|
||
|
||
for (let c of collections) {
|
||
let param = getPageParameter(c);
|
||
if (param !== pageParam) continue;
|
||
updateCollection(c);
|
||
}
|
||
} else {
|
||
updateCollection(collection, page);
|
||
}
|
||
});
|
||
}
|
||
|
||
for (let tagNav of tagNavs) {
|
||
updateTagNav(tagNav);
|
||
tagNav.addEventListener('click', onTagClick);
|
||
}
|
||
|
||
for (let tagLoop of tagLoops) {
|
||
tagLoop.addEventListener('click', onTagClick);
|
||
}
|
||
|
||
for (let authorLoop of authorLoops) {
|
||
authorLoop.addEventListener('click', onAuthorClick);
|
||
}
|
||
|
||
for (let authorNav of authorNavs) {
|
||
updateAuthorNav(authorNav);
|
||
}
|
||
|
||
function onTagClick(e) {
|
||
onBlogFilterClick(e);
|
||
|
||
for (let nav of tagNavs) {
|
||
updateTagNav(nav);
|
||
}
|
||
}
|
||
|
||
function onAuthorClick(e) {
|
||
onBlogFilterClick(e);
|
||
|
||
for (let authorNav of authorNavs) {
|
||
updateAuthorNav(authorNav);
|
||
}
|
||
}
|
||
|
||
function onBlogFilterClick(e) {
|
||
const item = e.target.closest('[data-bss-filter="blog"]');
|
||
if (!item || !item.dataset.hasOwnProperty('bssHref') || !item.dataset.hasOwnProperty('bssFilterParam')) return;
|
||
|
||
const stateNode = item.dataset.hasOwnProperty('bssStateNode') ? item : item.querySelector('[data-bss-state-node]');
|
||
|
||
if (stateNode && (stateNode.classList.contains('disabled') || stateNode.classList.contains('active'))) {
|
||
e.preventDefault();
|
||
return;
|
||
}
|
||
|
||
const link = item.dataset.bssHref;
|
||
if (!linksToCurrentPage(link)) return;
|
||
|
||
e.preventDefault();
|
||
|
||
const url = new URL(window.location);
|
||
const filterParam = item.dataset.bssFilterParam;
|
||
const filterValue = item.dataset.bssFilterValue || '';
|
||
|
||
const collectionsToUpdate = [];
|
||
const newQueryParams = {
|
||
[filterParam]: filterValue
|
||
};
|
||
|
||
for (let c of collections) {
|
||
if (!canFilterCollection(c)) continue;
|
||
collectionsToUpdate.push(c);
|
||
|
||
let pageParam = getPageParameter(c);
|
||
let page = url.searchParams.get(pageParam);
|
||
if (page === null || page == 1) continue;
|
||
|
||
newQueryParams[pageParam] = 1;
|
||
}
|
||
|
||
for (let param in newQueryParams) {
|
||
if (newQueryParams[param]) {
|
||
url.searchParams.set(param, newQueryParams[param]);
|
||
} else {
|
||
url.searchParams.delete(param);
|
||
}
|
||
}
|
||
|
||
history.pushState(newQueryParams, document.title, url);
|
||
|
||
for (let c of collectionsToUpdate) {
|
||
updateCollection(c);
|
||
}
|
||
}
|
||
|
||
function getCollectionFilters(collection) {
|
||
let filters = [];
|
||
|
||
try {
|
||
const parsed = JSON.parse(collection.dataset.bssFilters);
|
||
|
||
if (Array.isArray(parsed)) {
|
||
filters = parsed;
|
||
}
|
||
} catch (e) {}
|
||
|
||
return filters;
|
||
}
|
||
|
||
function getCollectionEmptyFilterAction(collection, filter = '') {
|
||
let emptyFilterActions = [];
|
||
|
||
try {
|
||
const parsed = JSON.parse(collection.dataset.bssEmptyFilterActions);
|
||
|
||
if (Array.isArray(parsed)) {
|
||
emptyFilterActions = parsed;
|
||
}
|
||
} catch (e) {}
|
||
|
||
const action = emptyFilterActions.find(action => action.filter === filter);
|
||
|
||
return action ? action.value : '';
|
||
}
|
||
|
||
function canFilterCollection(collection) {
|
||
return !!getCollectionFilters(collection).length;
|
||
}
|
||
|
||
function canFilterCollectionByTag(collection) {
|
||
return getCollectionFilters(collection).includes('tag');
|
||
}
|
||
|
||
function canFilterCollectionByAuthor(collection) {
|
||
return getCollectionFilters(collection).includes('author');
|
||
}
|
||
|
||
function shouldShowAllItemsForEmptyFilter(collection, filter = '') {
|
||
return getCollectionEmptyFilterAction(collection, filter) === 'show-all';
|
||
}
|
||
|
||
function canPaginateCollection(collection) {
|
||
return !!getCollectionPagination(collection);
|
||
}
|
||
|
||
function getCollectionPagination(collection) {
|
||
return collection.querySelector('[data-bss-type="blog-loop-pagination"]');
|
||
}
|
||
|
||
function getPageParameter(collection) {
|
||
return collection.dataset.bssPageParam;
|
||
}
|
||
|
||
function linksToCurrentPage(path = '') {
|
||
let currentURL, url;
|
||
|
||
try {
|
||
currentURL = new URL(window.location);
|
||
url = new URL(path, window.location.href);
|
||
} catch (e) {
|
||
console.error(e);
|
||
}
|
||
|
||
return currentURL.origin === url.origin && currentURL.pathname === url.pathname;
|
||
}
|
||
|
||
function updateCollection(collection, page, activeTag = '', activeAuthor = '') {
|
||
|
||
const url = new URL(window.location.href);
|
||
|
||
if (canPaginateCollection(collection)) {
|
||
if (!page) {
|
||
let pageParam = getPageParameter(collection);
|
||
page = (pageParam ? url.searchParams.get(pageParam) : 1) || 1;
|
||
}
|
||
}
|
||
|
||
if (canFilterCollectionByTag(collection) && !activeTag) {
|
||
let tagParam = 'tag';
|
||
activeTag = url.searchParams.get(tagParam) || '';
|
||
}
|
||
|
||
if (canFilterCollectionByAuthor(collection) && !activeAuthor) {
|
||
let authorParam = 'author';
|
||
activeAuthor = url.searchParams.get(authorParam) || '';
|
||
}
|
||
|
||
renderCollectionPage(collection, page, activeTag, activeAuthor);
|
||
}
|
||
|
||
function renderCollectionPage(collection, page = 1, activeTag = '', activeAuthor = '') {
|
||
|
||
page = Math.max(parseInt(page, 10), 1);
|
||
|
||
collection.style.removeProperty('display');
|
||
|
||
let loopBase = collection.querySelector('[data-bss-type="blog-loop-base"]');
|
||
loopBase && loopBase.style.removeProperty('display');
|
||
|
||
let emptyState = collection.querySelector('[data-bss-type="empty-state"]');
|
||
emptyState && emptyState.style.setProperty('display', 'none', 'important');
|
||
|
||
let listItems = [].slice.call(collection.querySelectorAll('[data-bss-type="blog-loop-item"]'));
|
||
listItems.forEach(item => item.style.setProperty('display', 'none', 'important'));
|
||
|
||
if (canFilterCollectionByTag(collection)) {
|
||
listItems = listItems.filter(item => activeTag ? item.classList.contains('post-tag-' + activeTag) : shouldShowAllItemsForEmptyFilter(collection, 'tag'));
|
||
}
|
||
|
||
if (canFilterCollectionByAuthor(collection)) {
|
||
listItems = listItems.filter(item => activeAuthor ? item.classList.contains('post-author-' + activeAuthor) : shouldShowAllItemsForEmptyFilter(collection, 'author'));
|
||
}
|
||
|
||
let perPage = collection.dataset.bssPerpage || listItems.length;
|
||
let visibleListItems = listItems.slice((page - 1) * perPage, page * perPage);
|
||
visibleListItems.forEach(item => item.style.removeProperty('display'));
|
||
|
||
let isEmpty = !visibleListItems.length;
|
||
|
||
if (isEmpty) {
|
||
loopBase && loopBase.style.setProperty('display', 'none', 'important');
|
||
emptyState && emptyState.style.removeProperty('display');
|
||
}
|
||
|
||
let itemCount = listItems.length;
|
||
let pageCount = Math.max(Math.ceil(itemCount / perPage), 1);
|
||
|
||
updateCollectionPagination(collection, page, pageCount, isEmpty);
|
||
|
||
if (collection.dataset.bssScrollOnChange) {
|
||
scrollToCollectionTop(collection);
|
||
}
|
||
}
|
||
|
||
function updateCollectionPagination(collection, page, pageCount, isEmpty) {
|
||
let pagination = getCollectionPagination(collection);
|
||
if (!pagination) return;
|
||
|
||
let paginationItems = [].slice.call(pagination.querySelectorAll('.page-item'));
|
||
|
||
if (pageCount === 1 || isEmpty) {
|
||
pagination.style.setProperty('display', 'none', 'important');
|
||
} else {
|
||
pagination.style.removeProperty('display');
|
||
}
|
||
|
||
let previousBtnDisabled = page - 1 <= 0;
|
||
let previousPage = previousBtnDisabled ? 1 : page - 1;
|
||
|
||
let nextBtnDisabled = page + 1 > pageCount;
|
||
let nextPage = nextBtnDisabled ? pageCount : page + 1;
|
||
|
||
for (let i = 0; i < paginationItems.length; i++) {
|
||
let paginationItem = paginationItems[i];
|
||
|
||
paginationItem.classList.remove('active', 'disabled');
|
||
|
||
if (paginationItem.dataset.type === 'prev') {
|
||
paginationItem.dataset.page = previousPage;
|
||
|
||
if (previousBtnDisabled) {
|
||
paginationItem.classList.add('disabled');
|
||
}
|
||
} else if (paginationItem.dataset.type === 'next') {
|
||
paginationItem.dataset.page = nextPage;
|
||
|
||
if (nextBtnDisabled) {
|
||
paginationItem.classList.add('disabled');
|
||
}
|
||
} else {
|
||
if (paginationItem.dataset.page > pageCount) {
|
||
paginationItem.style.setProperty('display', 'none', 'important');
|
||
} else {
|
||
paginationItem.style.removeProperty('display');
|
||
}
|
||
|
||
if (paginationItem.dataset.page == page) {
|
||
paginationItem.classList.add('active');
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
function scrollToCollectionTop(collection) {
|
||
const rect = collection.getBoundingClientRect();
|
||
const viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight);
|
||
const threshold = 100;
|
||
|
||
if (rect.top >= 0 && viewHeight - rect.top > threshold) return;
|
||
|
||
setTimeout(() => {
|
||
collection.scrollIntoView({
|
||
behavior: "smooth",
|
||
block: "start",
|
||
inline: "start"
|
||
});
|
||
}, 0);
|
||
}
|
||
|
||
function updateTagNav(tagNav) {
|
||
const url = new URL(window.location.href);
|
||
|
||
let tagParam = 'tag';
|
||
let tag = url.searchParams.get(tagParam) || '';
|
||
|
||
renderTagNav(tagNav, tag);
|
||
}
|
||
|
||
function renderTagNav(tagNav, activeTag = '') {
|
||
if (!tagNav.dataset.bssSyncUrl) return;
|
||
|
||
let navItems = [].slice.call(tagNav.querySelectorAll('[data-bss-type="tag-loop-item"]'));
|
||
|
||
navItems.forEach(item => {
|
||
const activeClassNode = item.dataset.hasOwnProperty('bssStateNode') ? item : item.querySelector('[data-bss-state-node]');
|
||
if (!activeClassNode) return;
|
||
|
||
activeClassNode.classList.remove('active');
|
||
|
||
const link = item.dataset.bssHref;
|
||
if (!linksToCurrentPage(link) || activeClassNode.classList.contains('disabled')) return;
|
||
|
||
if (item.dataset.bssTag === activeTag) {
|
||
activeClassNode.classList.add('active');
|
||
}
|
||
});
|
||
}
|
||
|
||
function updateAuthorNav(authorNav) {
|
||
const url = new URL(window.location.href);
|
||
|
||
let authorParam = 'author';
|
||
let author = url.searchParams.get(authorParam) || '';
|
||
|
||
renderAuthorNav(authorNav, author);
|
||
}
|
||
|
||
function renderAuthorNav(authorNav, activeAuthor = '') {
|
||
if (!canFilterCollectionByAuthor(authorNav)) return;
|
||
|
||
authorNav.style.removeProperty('display');
|
||
|
||
let items = [].slice.call(authorNav.querySelectorAll('[data-bss-type="author-loop-item"]'));
|
||
items.forEach(item => item.classList.contains('author-' + activeAuthor) ? item.style.removeProperty('display') : item.style.setProperty('display', 'none', 'important'));
|
||
}
|
||
})();
|
||
</script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.6/dist/js/bootstrap.bundle.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
|
||
<script src="../assets/js/bs-init.js?h=7c6b4c49b8ac0f383799ccb3d5def770"></script>
|
||
<script src="../assets/js/Carousel---Slider-With-Animation-slider_with_animation.js?h=948f8788fd189b5cc9df01ff4fce4152"></script>
|
||
<script src="../assets/js/CookieConsentComponent-cookieconsent.js?h=83fbb3192473604d72b00a854c6de4fd"></script>
|
||
<script src="https://kit.fontawesome.com/8970d94f9b.js"></script>
|
||
<script src="../assets/js/pikaday.min.js?h=039feef26d52ebc5f1260a47208bfa38"></script>
|
||
<script src="../assets/js/text-carousel.js?h=992f402828c7806b1f3bb7f29232e972"></script>
|
||
<script src="../assets/js/theme.js?h=aeddb9c3ce5d77b8278c91c07acf30ad"></script>
|
||
</body>
|
||
|
||
</html> |