Dashboard
Messages
Advanced Chatbot
Subscribers
Workshops
Video Resources
Tai Chi Videos
Coach Pei Corner
Johanna Corner
BFSAN Inquiries
Programs
12-Week Risk Reduction
Command Center
Participants
Consent Audit
Baseline Review
Goal Configuration
Weekly Scoring
Interventions
Coach Messages
Analytics
Daily Logs
Email Templates
30-Day Challenge
Nutritional Wellness
Tai Chi Program
Pickleball Program
8-Week Challenge
Soon
Educational Seminar
Soon
System
Cookie Consent Logs
Testimonials
Submissions
Users
System Settings
View Website
Edit Knowledge
Log In
Edit Knowledge Base Item
← Back to List
Title
Category
SubCategory
User Intent
Primary Question
Keywords (comma separated)
Content (Knowledge provided to AI)
@section Styles { /* ── Layout ── */ .cp-form-grid { display:grid; grid-template-columns:1fr 320px; gap:28px; align-items:start; } .cp-form-card { background:#fff; border-radius:10px; box-shadow:0 2px 10px rgba(0,0,0,0.04); border:1px solid #eef0f3; padding:28px; margin-bottom:24px; } .cp-form-card h4 { font-size:13px !important; font-weight:800 !important; text-transform:uppercase; letter-spacing:0.8px; color:var(--text-muted) !important; margin:0 0 20px !important; border-bottom:1px solid #f0f4f8; padding-bottom:12px; } .cp-field { margin-bottom:20px; } .cp-field label { display:block; font-size:13px; font-weight:700; color:#374151; margin-bottom:7px; } .cp-field input[type=text], .cp-field input[type=url], .cp-field input[type=number], .cp-field select { width:100%; box-sizing:border-box; padding:11px 14px; border:1px solid #e2e8f0; border-radius:7px; font-size:14px; font-family:inherit; color:#1a202c; background:#fafafa; outline:none; transition:border-color 0.2s; } .cp-field input:focus, .cp-field select:focus { border-color:var(--primary-green); background:#fff; } .cp-field .hint { font-size:11px; color:var(--text-muted); margin-top:5px; } .cp-toggle { display:flex; align-items:center; gap:10px; cursor:pointer; } .cp-toggle input[type=checkbox] { width:17px; height:17px; accent-color:var(--primary-green); cursor:pointer; } .cp-toggle span { font-size:13px; font-weight:600; color:#374151; } .cp-action-btns { display:flex; gap:12px; flex-wrap:wrap; margin-top:4px; } .cp-back { font-size:13px; color:var(--text-muted); text-decoration:none; display:inline-flex; align-items:center; gap:6px; margin-bottom:20px; font-weight:600; } .cp-back:hover { color:var(--primary-green); } /* ── Quill editor ── */ .cp-quill-wrap { border:1px solid #e2e8f0; border-radius:7px; overflow:hidden; background:#fff; } .cp-quill-wrap:focus-within { border-color:var(--primary-green); } #bodyQuill { min-height:260px; font-family:'Plus Jakarta Sans',sans-serif; font-size:14px; color:#1a202c; line-height:1.75; } .ql-toolbar.ql-snow { border:none; border-bottom:1px solid #e2e8f0; background:#fafbfc; } .ql-container.ql-snow { border:none; } /* ── Image Upload ── */ .cp-upload-zone { border:2px dashed #c9d5cc; border-radius:10px; padding:28px 20px; text-align:center; cursor:pointer; transition:border-color 0.25s, background 0.25s; background:#fafdf9; position:relative; } .cp-upload-zone:hover, .cp-upload-zone.drag-over { border-color:var(--primary-green); background:#f0f8f4; } .cp-upload-zone input[type=file] { position:absolute; inset:0; opacity:0; cursor:pointer; width:100%; height:100%; } .cp-upload-icon { font-size:32px; color:#b0c4b8; margin-bottom:10px; } .cp-upload-zone p { margin:0; font-size:13px; color:var(--text-muted); line-height:1.6; } .cp-upload-zone strong { color:var(--primary-green); } .cp-img-preview-wrap { margin-top:14px; display:none; position:relative; } .cp-img-preview-wrap img { width:100%; border-radius:8px; max-height:200px; object-fit:cover; border:1px solid #e2e8f0; display:block; } .cp-img-remove { position:absolute; top:6px; right:6px; background:rgba(0,0,0,0.55); color:#fff; border:none; border-radius:50%; width:26px; height:26px; font-size:12px; cursor:pointer; display:flex; align-items:center; justify-content:center; } .cp-img-remove:hover { background:#e53e3e; } .cp-current-img { border-radius:8px; overflow:hidden; margin-bottom:12px; position:relative; } .cp-current-img img { width:100%; max-height:180px; object-fit:cover; display:block; border-radius:8px; border:1px solid #e2e8f0; } .cp-current-img p { font-size:11px; color:var(--text-muted); margin:6px 0 0; text-align:center; } } Back to Manage Thoughts @(Model.IsNew ? "✍️ New Thought" : "✏️ Edit Thought") @(Model.IsNew ? "Write and share a new Tai Chi reflection with Coach Pei." : $"Editing: {Model.Reflection.Title}") @if (!ModelState.IsValid) { Please fix the following: } @Html.AntiForgeryToken() Post Content 📝 Title * 📋 Short Description * This is the text that appears on the card preview — keep it short and inviting. ✍️ Full Article Use the toolbar below to format your text — no coding needed. Click B for bold, I for italic, and use the list buttons for bullet points. @Html.Raw(Model.Reflection.Body) Write in plain language. Use bold for key points and bullet lists for learning points. 💬 Inspirational Quote (Optional) If you have a meaningful quote to highlight, add it here. It will appear as a styled pull-quote in the middle of the article. Quote Text Quote Source 🚀 Publish Publish Now Save Draft Status: @(string.IsNullOrEmpty(Model.Reflection.Status) ? "New Draft" : Model.Reflection.Status) @if (Model.Reflection.PublishedAt.HasValue) { Published: @Model.Reflection.PublishedAt.Value.ToString("MMMM d, yyyy") } 🖼️ Cover Photo Upload a photo for the reflection card and detail page. Click the box below or drag and drop an image file. @if (!string.IsNullOrWhiteSpace(Model.Reflection.CoverImageUrl)) { Current cover photo } Click to choose a photo or drag and drop it here Accepted: JPG, PNG, WebP, GIF | Max size: 5 MB ⚙️ Settings Category * Mindfulness Movement Philosophy Nature Wellness Recovery Learning Community Progress Tags Separate tags with commas. These help readers find related topics. ⏱️ Estimated Read Time @Model.Reflection.ReadTimeMinutes min read Auto-calculated from your article length as you write — no need to enter this manually. Author Name ⭐ Pin as Featured Post The featured post always appears at the top of all listing pages and the homepage. @section Scripts { // ── Quill rich-text editor ────────────────────────────────────────────────── const quill = new Quill('#bodyQuill', { theme: 'snow', placeholder: 'Write your Tai Chi reflection here... Share your thoughts, insights, and wisdom with the community.', modules: { toolbar: [ [{ header: [2, 3, false] }], ['bold', 'italic', 'underline'], [{ list: 'ordered' }, { list: 'bullet' }], ['blockquote'], ['clean'] ] } }); // ── Live read-time calculator (200 wpm — same formula as server) ──────────── function calcReadTime(text) { var words = (text.match(/\b\w+\b/g) || []).length; var minutes = Math.ceil(words / 200); return Math.max(1, minutes); } function updateReadTime() { var text = quill.getText(); // plain text, no HTML var minutes = calcReadTime(text); var label = minutes === 1 ? '1 min read' : minutes + ' min read'; document.getElementById('readTimeDisplay').textContent = label; document.getElementById('readTimeHidden').value = minutes; } quill.on('text-change', updateReadTime); updateReadTime(); // run once on load // Sync Quill content → hidden input before form submit document.querySelector('form').addEventListener('submit', function () { document.getElementById('bodyHidden').value = quill.root.innerHTML; }); // ── Cover image upload handling ───────────────────────────────────────────── const fileInput = document.getElementById('coverFileInput'); const uploadZone = document.getElementById('uploadZone'); const previewWrap = document.getElementById('previewWrap'); const imgPreview = document.getElementById('imgPreview'); const removeBtn = document.getElementById('removeImgBtn'); const fileName = document.getElementById('uploadFileName'); const errorBox = document.getElementById('uploadError'); const currentWrap = document.getElementById('currentImgWrap'); const MAX_MB = 5; function handleFile(file) { errorBox.style.display = 'none'; if (!file) return; // Size check if (file.size > MAX_MB * 1024 * 1024) { errorBox.textContent = `File is too large (${(file.size/1048576).toFixed(1)} MB). Please choose an image under ${MAX_MB} MB.`; errorBox.style.display = 'block'; fileInput.value = ''; return; } // Type check if (!file.type.startsWith('image/')) { errorBox.textContent = 'Please choose a valid image file (JPG, PNG, WebP or GIF).'; errorBox.style.display = 'block'; fileInput.value = ''; return; } const reader = new FileReader(); reader.onload = e => { imgPreview.src = e.target.result; previewWrap.style.display = 'block'; fileName.textContent = '✔ Selected: ' + file.name; fileName.style.display = 'block'; if (currentWrap) currentWrap.style.display = 'none'; }; reader.readAsDataURL(file); } fileInput.addEventListener('change', () => handleFile(fileInput.files[0])); // Drag & drop uploadZone.addEventListener('dragover', e => { e.preventDefault(); uploadZone.classList.add('drag-over'); }); uploadZone.addEventListener('dragleave', () => uploadZone.classList.remove('drag-over')); uploadZone.addEventListener('drop', e => { e.preventDefault(); uploadZone.classList.remove('drag-over'); const dt = e.dataTransfer; if (dt.files.length) { fileInput.files = dt.files; handleFile(dt.files[0]); } }); // Remove selected image removeBtn.addEventListener('click', () => { fileInput.value = ''; imgPreview.src = ''; previewWrap.style.display = 'none'; fileName.style.display = 'none'; errorBox.style.display = 'none'; if (currentWrap) currentWrap.style.display = 'block'; }); // Auto-generate slug from title (hidden from non-tech users but still works) const titleInput = document.querySelector('[name="Reflection.Title"]'); if (titleInput) { titleInput.addEventListener('input', function () { // The slug field is not shown to the user — it will be auto-generated on save }); } }
Page Title
Page URL
Related Questions (JSON Array of strings)
Recommended Actions (JSON Array of objects)
[]
Active
Save Changes
Cancel