Enforce study lesson release locks and schedule biweekly Monday dates
This commit is contained in:
@@ -111,6 +111,36 @@ function sanitizeUrl(value) {
|
||||
return ''
|
||||
}
|
||||
|
||||
function isSectionReleased(section) {
|
||||
if (!section || typeof section !== 'object') return false
|
||||
if (typeof section.releasedAt !== 'string' || !section.releasedAt.trim()) return true
|
||||
const releaseTime = Date.parse(section.releasedAt)
|
||||
if (!Number.isFinite(releaseTime)) return true
|
||||
return releaseTime <= Date.now()
|
||||
}
|
||||
|
||||
function filterSiteContentByReleaseDate(siteContent) {
|
||||
if (!siteContent || typeof siteContent !== 'object' || Array.isArray(siteContent)) return siteContent
|
||||
|
||||
const filteredStudies = Array.isArray(siteContent.studies)
|
||||
? siteContent.studies.map(study => {
|
||||
if (!study || typeof study !== 'object') return study
|
||||
const sections = Array.isArray(study.sections) ? study.sections.filter(isSectionReleased) : []
|
||||
return { ...study, sections }
|
||||
})
|
||||
: siteContent.studies
|
||||
|
||||
const filteredLegacySections = Array.isArray(siteContent.colossiansStudySections)
|
||||
? siteContent.colossiansStudySections.filter(isSectionReleased)
|
||||
: siteContent.colossiansStudySections
|
||||
|
||||
return {
|
||||
...siteContent,
|
||||
studies: filteredStudies,
|
||||
colossiansStudySections: filteredLegacySections,
|
||||
}
|
||||
}
|
||||
|
||||
function sanitizeRedirectRules(value) {
|
||||
const source = Array.isArray(value) ? value : []
|
||||
const seen = new Set()
|
||||
@@ -1278,6 +1308,12 @@ app.get('/api/admin-content', async (req, res) => {
|
||||
|
||||
try {
|
||||
const parsed = await loadSiteContentFile(source === 'draft' ? DRAFT_DATA_FILE : DATA_FILE)
|
||||
if (source === 'published') {
|
||||
const safeSiteContent = filterSiteContentByReleaseDate(parsed.siteContent)
|
||||
res.json({ ...parsed, siteContent: safeSiteContent })
|
||||
return
|
||||
}
|
||||
|
||||
res.json(parsed)
|
||||
} catch {
|
||||
if (source === 'draft') {
|
||||
|
||||
Reference in New Issue
Block a user