← back to Jill Website
views/admin-edit-page.ejs
181 lines
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Edit Page - CMS</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: #f5f7fa;
color: #333;
}
.header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 20px 30px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
}
.btn {
padding: 10px 20px;
border: none;
border-radius: 6px;
font-size: 14px;
font-weight: 500;
cursor: pointer;
text-decoration: none;
display: inline-block;
}
.btn-back {
background: rgba(255, 255, 255, 0.2);
color: white;
border: 1px solid rgba(255, 255, 255, 0.3);
}
.container {
max-width: 900px;
margin: 30px auto;
padding: 0 30px;
}
.card {
background: white;
border-radius: 8px;
padding: 30px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
}
.form-group {
margin-bottom: 20px;
}
.form-group label {
display: block;
font-weight: 600;
margin-bottom: 8px;
}
.form-group input[type="text"],
.form-group textarea {
width: 100%;
padding: 12px;
border: 2px solid #e0e0e0;
border-radius: 8px;
font-family: inherit;
font-size: 14px;
}
.form-group textarea {
min-height: 300px;
}
.btn-primary {
background: #667eea;
color: white;
padding: 12px 30px;
font-size: 16px;
margin-right: 10px;
}
.btn-primary:hover {
background: #5568d3;
}
.alert {
padding: 15px;
border-radius: 8px;
margin-bottom: 20px;
}
.alert-success {
background: #d4edda;
color: #155724;
}
.alert-error {
background: #f8d7da;
color: #721c24;
}
</style>
</head>
<body>
<div class="header">
<h1>✏️ Edit Page</h1>
<a href="/admin" class="btn btn-back">← Back</a>
</div>
<div class="container">
<div id="alert"></div>
<div class="card">
<form id="edit-form">
<div class="form-group">
<label for="page_title">Page Title</label>
<input type="text" id="page_title" required>
</div>
<div class="form-group">
<label for="content">Content (HTML supported)</label>
<textarea id="content" required></textarea>
</div>
<button type="submit" class="btn btn-primary">💾 Save Changes</button>
</form>
</div>
</div>
<script>
const pageSlug = window.location.pathname.split('/').pop();
let pageData = null;
// Load page data
fetch('/api/cms/pages/' + pageSlug)
.then(res => res.json())
.then(data => {
if (data.success) {
pageData = data.data;
document.getElementById('page_title').value = pageData.page_title;
document.getElementById('content').value = pageData.content;
} else {
showAlert('Failed to load page', 'error');
}
})
.catch(error => {
console.error('Error:', error);
showAlert('Failed to load page', 'error');
});
// Form submission
document.getElementById('edit-form').addEventListener('submit', async (e) => {
e.preventDefault();
const formData = {
page_title: document.getElementById('page_title').value,
content: document.getElementById('content').value,
gallery_images: pageData.gallery_images || []
};
try {
const response = await fetch('/api/cms/pages/' + pageSlug, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(formData)
});
const data = await response.json();
if (data.success) {
showAlert('Page updated successfully!', 'success');
pageData = data.data;
} else {
showAlert('Failed to update: ' + data.message, 'error');
}
} catch (error) {
console.error('Error:', error);
showAlert('Failed to update page', 'error');
}
});
function showAlert(message, type) {
const alert = document.getElementById('alert');
alert.innerHTML = `<div class="alert alert-${type}">${message}</div>`;
setTimeout(() => alert.innerHTML = '', 5000);
}
</script>
</body>
</html>