DSUdemy-Main / programs /index.html
dsuacademy's picture
Upload 18 files
3d9b0c6 verified
Raw History Blame
9.59 kB
<!doctype html>
<html lang="th">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<title>หลักสูตรห้องเรียนพิเศษ | ฝ่ายวิชาการและนวัตกรรมการเรียนรู้ โรงเรียนสาธิต มหาวิทยาลัยศิลปากร (มัธยมศึกษา)
</title>
<meta name="description"
content="หลักสูตรห้องเรียนพิเศษของโรงเรียนสาธิต มหาวิทยาลัยศิลปากร (มัธยมศึกษา) ได้แก่ PU-HSET, STEAM Robotics, Trilingual, Arts &amp; Design และ G-WISS พร้อมกำหนดการรับสมัครและการทดสอบ">
<meta name="theme-color" content="#0033FF">
<meta property="og:type" content="website">
<meta property="og:url" content="https://dsudemy.net/programs/">
<meta property="og:title" content="หลักสูตรห้องเรียนพิเศษ">
<meta property="og:description"
content="PU-HSET, STEAM Robotics, Trilingual, Arts &amp; Design และ G-WISS ของโรงเรียนสาธิต มหาวิทยาลัยศิลปากร (มัธยมศึกษา)">
<meta property="og:image" content="https://dsudemy.net/assets/og-image.png">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:locale" content="th_TH">
<link rel="icon" type="image/png" sizes="32x32" href="../assets/favicon-32.png">
<link rel="apple-touch-icon" href="../assets/apple-touch-icon.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet"
href="https://fonts.googleapis.com/css2?family=Anuphan:wght@500;600;700&family=IBM+Plex+Sans+Thai:wght@400;500;600&display=swap">
<link rel="stylesheet" href="../shared/theme.css">
<script>try { var t = localStorage.getItem('theme'); if (t === 'dark' || t === 'light') document.documentElement.dataset.theme = t } catch (e) { }</script>
</head>
<body data-root="../" data-page="programs">
<a class="sr-only" href="#main">ข้ามไปยังเนื้อหาหลัก</a>
<header class="site-header" id="siteHeader"></header>
<main id="main">
<div class="wrap">
<nav class="breadcrumb" aria-label="ตำแหน่งของหน้า">
<a href="../">หน้าแรก</a><span aria-hidden="true">/</span><span
aria-current="page">หลักสูตรห้องเรียนพิเศษ</span>
</nav>
</div>
<section class="section first" aria-labelledby="pageTitle">
<div class="wrap">
<div class="tile page-hero">
<span class="eyebrow">บริหารโดยคณะกรรมการของแต่ละหลักสูตร</span>
<h1 id="pageTitle">หลักสูตรห้องเรียนพิเศษ</h1>
<p class="lead">โรงเรียนสาธิต มหาวิทยาลัยศิลปากร (มัธยมศึกษา) มีหลักสูตรห้องเรียนพิเศษ <span
id="progCount"></span>หลักสูตร แต่ละหลักสูตรบริหารโดย<span
class="nw">คณะกรรมการบริหารหลักสูตร</span>ของตนเอง</p>
<nav aria-label="ไปยังหลักสูตร">
<div class="pill-row" id="progNav"></div>
</nav>
<div class="hero-actions" id="heroActions" hidden></div>
</div>
</div>
</section>
<section class="section" aria-label="รายละเอียดหลักสูตร">
<div class="wrap prog-list" id="progList"></div>
</section>
<section class="section" aria-labelledby="admTitle" id="admSec" hidden>
<div class="wrap">
<div class="tile panel">
<span class="eyebrow">จากปฏิทินการศึกษาของโรงเรียน</span>
<h2 id="admTitle">กำหนดการรับสมัครและการทดสอบ</h2>
<p class="sec-intro">กำหนดการรับสมัครนักเรียน ม.1 และ ม.4 ของโรงเรียน รายการที่มีป้าย "ห้องเรียนพิเศษ"
เป็นการทดสอบที่ระบุหลักสูตรหรือสาขาเฉพาะ</p>
<div id="admBody"></div>
<p class="src-note" id="admSource"></p>
</div>
</div>
</section>
</main>
<footer class="footer" id="contact"></footer>
<script src="../data/site.js"></script>
<script src="../data/units.js"></script>
<script src="../data/programs.js"></script>
<script src="../data/calendar-2569.js"></script>
<script src="../shared/layout.js"></script>
<script>
/* หน้าหลักสูตรห้องเรียนพิเศษ: เนื้อหามาจาก data/programs.js และกำหนดการจาก data/calendar-2569.js */
(function () {
const D = window.DSU, U = D.util, P = D.programs || { list: [] }, CAL = D.calendar;
const { esc, has, fmtDate, extNote, icon } = U;
const $ = s => document.querySelector(s);
const TODAY = U.todayISO();
const list = P.list || [];
$('#progCount').textContent = list.length ? list.length + ' ' : '';
$('#progNav').innerHTML = list.map(p => '<a class="pill" href="#' + esc(p.id) + '">' + esc(p.name) + '</a>').join('');
if (has(P.admissionsUrl)) {
$('#heroActions').innerHTML = '<a class="btn btn-primary btn-sm" href="' + esc(P.admissionsUrl) + '" target="_blank" rel="noopener">ประกาศรับสมัครบนเว็บไซต์โรงเรียน' + extNote(P.admissionsUrl) + '</a>';
$('#heroActions').hidden = false;
}
/* รายละเอียดแต่ละหลักสูตร ช่องที่ว่างจะไม่แสดง */
$('#progList').innerHTML = list.map(p => {
const subs = [p.nameTh, p.nameEn].filter(has).map(x => '<span class="unit-th">' + esc(x) + '</span>').join('');
const hasDetail = [p.grades, p.fit, p.focus, p.highlights].some(has);
const parts_ = [];
if (has(p.grades)) parts_.push('<span class="chips tight"><span class="tag tag-ai">' + esc(p.grades) + '</span></span>');
if (has(p.fit)) parts_.push('<p class="text-2">' + esc(p.fit) + '</p>');
if (has(p.focus)) parts_.push('<h3>จุดเน้นและสิ่งที่เรียน</h3><ul class="plain-list">' + p.focus.map(x => '<li>' + esc(x) + '</li>').join('') + '</ul>');
if (has(p.highlights)) parts_.push('<h3>กิจกรรมและผลงานเด่น</h3><ul class="plain-list">' + p.highlights.map(x => '<li>' + esc(x) + '</li>').join('') + '</ul>');
if (!hasDetail) parts_.push('<span class="soon-badge">รายละเอียดหลักสูตรเร็ว ๆ นี้</span>');
const contact = (has(p.contactRole) ? '<p class="prog-contact">ดูแลโดย ' + esc(p.contactRole) + (has(p.contactEmail) ? ' อีเมล <a href="mailto:' + esc(p.contactEmail) + '">' + esc(p.contactEmail) + '</a>' : '') + '</p>' : '');
const link = has(p.link) ? '<div class="unit-actions"><a class="link-btn" href="' + esc(p.link) + '" target="_blank" rel="noopener">เว็บไซต์ของหลักสูตร' + icon('external', 16) + extNote(p.link) + '</a></div>' : '';
const upd = has(p.updated) ? '<p class="updated">ปรับปรุงข้อมูล ' + esc(fmtDate(p.updated)) + '</p>' : '';
return '<article class="tile prog-detail" id="' + esc(p.id) + '" aria-labelledby="h-' + esc(p.id) + '">' +
'<div class="stack-xs"><h2 id="h-' + esc(p.id) + '">' + esc(p.name) + '</h2>' + subs + '</div>' +
parts_.join('') + contact + link + upd + '</article>';
}).join('');
/* กำหนดการรับสมัครที่เกี่ยวกับผู้สมัครจากภายนอก */
if (CAL) {
const ev = CAL.events.filter(e => e.cat === 'admission' && (e.aud || []).includes('public') && (e.end || e.start) >= TODAY)
.sort((a, b) => a.start.localeCompare(b.start));
if (ev.length) {
$('#admBody').innerHTML = U.monthList(ev, e => (e.tags || []).includes('special') ? '<span class="tag tag-ai">ห้องเรียนพิเศษ</span>' : '');
$('#admSource').textContent = 'ข้อมูลจาก' + (CAL.version || 'ปฏิทินการศึกษา') + ' รายละเอียดคุณสมบัติ ค่าธรรมเนียม และวิธีสมัคร ดูประกาศรับสมัครบนเว็บไซต์โรงเรียน';
$('#admSec').hidden = false;
}
}
})();
</script>
</body>
</html>