diff --git a/public/js/admin/blog-validation.js b/public/js/admin/blog-validation.js index 737c1773..df0494f4 100644 --- a/public/js/admin/blog-validation.js +++ b/public/js/admin/blog-validation.js @@ -221,7 +221,8 @@ async function loadValidationArticles() {
${!isStandalone ? ` @@ -843,6 +844,41 @@ let currentSubmissionArticleId = null; let currentSubmissionId = null; let currentArticleData = null; +/** + * Open modal for standalone submission package (no blog post) + */ +async function openStandaloneSubmissionModal(submissionId) { + const modal = document.getElementById('manage-submission-modal'); + if (!modal) { + createEnhancedSubmissionModal(); + } + + try { + // Load submission data directly + const response = await apiCall(`/api/submissions/${submissionId}`); + if (!response.ok) throw new Error('Failed to load submission data'); + + const submissionResponse = await response.json(); + currentSubmission = submissionResponse.data || submissionResponse; + + // No article for standalone submissions + currentArticle = null; + + // Update modal title + document.getElementById('modal-title').textContent = `Submission Package: ${currentSubmission.title}`; + + // Show modal + document.getElementById('manage-submission-modal').classList.remove('hidden'); + + // Load overview tab + switchTab('overview'); + + } catch (error) { + console.error('Error loading standalone submission:', error); + alert('Failed to load submission package. Please try again.'); + } +} + /** * Initialize Manage Submission button handlers */ @@ -852,7 +888,15 @@ function initManageSubmissionHandlers() { if (e.target.classList.contains('manage-submission')) { const articleId = e.target.dataset.articleId; const submissionId = e.target.dataset.submissionId; - openManageSubmissionModal(articleId, submissionId || null); + const isStandalone = e.target.dataset.isStandalone === 'true'; + + if (isStandalone) { + // For standalone submissions, open with submission ID only + openStandaloneSubmissionModal(articleId); + } else { + // For blog-linked submissions, open with article ID + openManageSubmissionModal(articleId, submissionId || null); + } } }); } diff --git a/public/js/admin/submission-modal-enhanced.js b/public/js/admin/submission-modal-enhanced.js index 08ea8f7e..28ae8d9e 100644 --- a/public/js/admin/submission-modal-enhanced.js +++ b/public/js/admin/submission-modal-enhanced.js @@ -224,7 +224,11 @@ function renderOverviewTab() { const submission = currentSubmission || {}; const article = currentArticle; - const wordCount = article.content ? article.content.split(/\s+/).length : 0; + // Handle standalone submissions (no article) + const isStandalone = !article; + const title = isStandalone ? submission.title : article.title; + const subtitle = isStandalone ? '' : (article.subtitle || ''); + const wordCount = isStandalone ? (submission.wordCount || 0) : (article.content ? article.content.split(/\s+/).length : 0); const publicationName = submission.publicationName || 'Not assigned'; const status = submission.status || 'draft'; @@ -235,26 +239,48 @@ function renderOverviewTab() { if (submission.documents?.authorBio?.versions?.length > 0) completionScore += 25; if (submission.publicationId) completionScore += 25; - const excerptText = article.excerpt || (article.content?.substring(0, 300) + '...') || 'No content available'; - const publishedDate = article.published_at ? new Date(article.published_at).toLocaleDateString() : 'N/A'; + // Get content/excerpt - for standalone, use document content if available + let excerptText = 'No content available'; + if (isStandalone) { + const mainArticle = submission.documents?.mainArticle?.versions?.[0]; + if (mainArticle?.content) { + excerptText = mainArticle.content.substring(0, 300) + '...'; + } + } else { + excerptText = article.excerpt || (article.content?.substring(0, 300) + '...') || 'No content available'; + } + + const publishedDate = isStandalone + ? (submission.submittedAt ? new Date(submission.submittedAt).toLocaleDateString() : 'Not submitted') + : (article.published_at ? new Date(article.published_at).toLocaleDateString() : 'N/A'); return `
- + ${isStandalone ? ` + +
+
+ 📦 Standalone Submission Package + This is a direct submission without an associated blog post +
+
+ ` : ''} + +
-

Article Preview

+

${isStandalone ? 'Submission' : 'Article'} Preview

-

${escapeHtml(article.title)}

-
- ${escapeHtml(article.subtitle || '')} -
+

${escapeHtml(title)}

+ ${subtitle ? `
+ ${escapeHtml(subtitle)} +
` : ''}
${escapeHtml(excerptText)}
Word Count: ${wordCount.toLocaleString()} - Published: ${publishedDate} + ${isStandalone ? 'Submitted' : 'Published'}: ${publishedDate}