header and footer(待續)
This commit is contained in:
@@ -368,6 +368,8 @@
|
||||
li.dataset.showInNav = item.show_in_nav !== false ? 'true' : 'false';
|
||||
li.dataset.isHomepage = item.is_homepage ? 'true' : 'false';
|
||||
li.dataset.requiresPassword = item.requires_password ? 'true' : 'false';
|
||||
li.dataset.hasHeader = item.has_header !== false ? 'true' : 'false';
|
||||
li.dataset.hasFooter = item.has_footer === true ? 'true' : 'false';
|
||||
|
||||
const titleWrap = document.createElement('span');
|
||||
titleWrap.className = 'tree-title';
|
||||
@@ -382,26 +384,40 @@
|
||||
meta.innerHTML = `
|
||||
<button class='btn btn-ghost btn-sm btn-nav' title='顯示於導覽列'>☰</button>
|
||||
<button class='btn btn-ghost btn-sm btn-homepage' title='設為首頁'>⭐</button>
|
||||
<button class='btn btn-ghost btn-sm btn-header' title='頁首'>🧾</button>
|
||||
<button class='btn btn-ghost btn-sm btn-footer' title='頁尾'>☷</button>
|
||||
<button class='btn btn-ghost btn-sm btn-password' title='需要密碼'>🔒</button>
|
||||
`;
|
||||
|
||||
const btnNav = meta.querySelector('.btn-nav');
|
||||
const btnHome = meta.querySelector('.btn-homepage');
|
||||
const btnHeader = meta.querySelector('.btn-header');
|
||||
const btnFooter = meta.querySelector('.btn-footer');
|
||||
const btnPassword = meta.querySelector('.btn-password');
|
||||
|
||||
const updateMetaState = () => {
|
||||
const showNav = li.dataset.showInNav === 'true';
|
||||
const isHomepage = li.dataset.isHomepage === 'true';
|
||||
const requiresPassword = li.dataset.requiresPassword === 'true';
|
||||
const hasHeader = li.dataset.hasHeader === 'true';
|
||||
const hasFooter = li.dataset.hasFooter === 'true';
|
||||
btnNav.classList.toggle('active', showNav);
|
||||
btnNav.title = showNav ? '顯示於導覽列' : '從導覽列隱藏';
|
||||
btnHome.classList.toggle('active', isHomepage);
|
||||
btnHome.title = isHomepage ? '首頁' : '設為首頁';
|
||||
btnHeader.classList.toggle('active', hasHeader);
|
||||
btnHeader.title = hasHeader ? '包含頁首' : '不包含頁首';
|
||||
btnFooter.classList.toggle('active', hasFooter);
|
||||
btnFooter.title = hasFooter ? '包含頁尾' : '不包含頁尾';
|
||||
btnPassword.classList.toggle('active', requiresPassword);
|
||||
btnPassword.title = requiresPassword ? '需要密碼' : '不需要密碼';
|
||||
if (li.dataset.type !== 'file') {
|
||||
btnHome.disabled = true;
|
||||
btnHeader.disabled = true;
|
||||
btnFooter.disabled = true;
|
||||
btnHome.title = '僅限單一頁面';
|
||||
btnHeader.title = '僅限單一頁面';
|
||||
btnFooter.title = '僅限單一頁面';
|
||||
}
|
||||
};
|
||||
|
||||
@@ -415,6 +431,16 @@
|
||||
li.dataset.requiresPassword = li.dataset.requiresPassword === 'true' ? 'false' : 'true';
|
||||
updateMetaState();
|
||||
});
|
||||
btnHeader.addEventListener('click', () => {
|
||||
if (li.dataset.type !== 'file') return;
|
||||
li.dataset.hasHeader = li.dataset.hasHeader === 'true' ? 'false' : 'true';
|
||||
updateMetaState();
|
||||
});
|
||||
btnFooter.addEventListener('click', () => {
|
||||
if (li.dataset.type !== 'file') return;
|
||||
li.dataset.hasFooter = li.dataset.hasFooter === 'true' ? 'false' : 'true';
|
||||
updateMetaState();
|
||||
});
|
||||
btnHome.addEventListener('click', () => {
|
||||
if (li.dataset.type !== 'file') return;
|
||||
container.querySelectorAll('.tree-item').forEach(other => {
|
||||
@@ -500,6 +526,8 @@
|
||||
show_in_nav: li.dataset.showInNav === 'true',
|
||||
is_homepage: li.dataset.isHomepage === 'true',
|
||||
requires_password: li.dataset.requiresPassword === 'true',
|
||||
has_header: li.dataset.hasHeader === 'true',
|
||||
has_footer: li.dataset.hasFooter === 'true',
|
||||
};
|
||||
const childUl = li.querySelector(':scope > ul');
|
||||
if (childUl) obj.children = walk(childUl);
|
||||
|
||||
Reference in New Issue
Block a user