Spaces:
Running
Running
funns can subscribe, and admin must connect by login and password to add/remove/active,desactive visibility ... - Initial Deployment
14c46b4 verified | <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Add Content - CineVerse</title> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet"> | |
| <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script> | |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> | |
| <script src="https://unpkg.com/feather-icons"></script> | |
| <style> | |
| .form-section { | |
| background: linear-gradient(135deg, rgba(55, 65, 81, 0.5) 0%, rgba(55, 65, 81, 0.3) 100%); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| } | |
| .series-episodes { | |
| display: none; | |
| } | |
| .series-active .series-episodes { | |
| display: block; | |
| } | |
| </style> | |
| </head> | |
| <body class="bg-gray-900 text-white"> | |
| <!-- Navigation --> | |
| <nav class="bg-gray-800 shadow-lg fixed w-full z-50"> | |
| <div class="max-w-7xl mx-auto px-4"> | |
| <div class="flex justify-between items-center py-4"> | |
| <a href="index.html" class="flex items-center space-x-2"> | |
| <i data-feather="film" class="text-purple-500"></i> | |
| <span class="font-bold text-xl">CineVerse</span> | |
| </a> | |
| <div class="hidden md:flex space-x-8"> | |
| <a href="index.html" class="hover:text-purple-400 transition">Home</a> | |
| <a href="browse.html" class="hover:text-purple-400 transition">Browse</a> | |
| <a href="add-post.html" class="text-purple-400 font-semibold">Add Content</a> | |
| </div> | |
| <div class="md:hidden"> | |
| <button id="mobile-menu-button" class="p-2"> | |
| <i data-feather="menu"></i> | |
| </button> | |
| </div> | |
| </div> | |
| </div> | |
| </nav> | |
| <!-- Page Header --> | |
| <div class="pt-32 pb-10 bg-gray-800"> | |
| <div class="max-w-7xl mx-auto px-4"> | |
| <h1 class="text-4xl font-bold mb-4">Add New Content</h1> | |
| <p class="text-gray-400">Share films and series with our community</p> | |
| </div> | |
| </div> | |
| <!-- Form Section --> | |
| <section class="py-12"> | |
| <div class="max-w-4xl mx-auto px-4"> | |
| <div class="form-section rounded-xl p-8"> | |
| <form id="content-form"> | |
| <!-- Content Type --> | |
| <div class="mb-8"> | |
| <label class="block text-lg font-semibold mb-4">Content Type</label> | |
| <div class="flex space-x-4"> | |
| <label class="flex items-center"> | |
| <input type="radio" name="contentType" value="movie" class="mr-2" checked> | |
| Movie | |
| </label> | |
| <label class="flex items-center"> | |
| <input type="radio" name="contentType" value="series" class="mr-2"> | |
| TV Series | |
| </label> | |
| </div> | |
| </div> | |
| <!-- Basic Information --> | |
| <div class="mb-8"> | |
| <h2 class="text-xl font-semibold mb-6 border-b border-gray-700 pb-2">Basic Information</h2> | |
| <div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6"> | |
| <div> | |
| <label class="block text-sm font-medium mb-2">Title *</label> | |
| <input type="text" required class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-purple-500"> | |
| </div> | |
| <div> | |
| <label class="block text-sm font-medium mb-2">Original Title</label> | |
| <input type="text" class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-purple-500"> | |
| </div> | |
| </div> | |
| <div class="mb-6"> | |
| <label class="block text-sm font-medium mb-2">Description *</label> | |
| <textarea required rows="4" class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-purple-500"></textarea> | |
| </div> | |
| <div class="grid grid-cols-1 md:grid-cols-3 gap-6 mb-6"> | |
| <div> | |
| <label class="block text-sm font-medium mb-2">Release Year *</label> | |
| <input type="number" min="1900" max="2030" required class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-purple-500"> | |
| </div> | |
| <div> | |
| <label class="block text-sm font-medium mb-2">Country *</label> | |
| <select required class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-purple-500"> | |
| <option value="">Select Country</option> | |
| <option value="usa">United States</option> | |
| <option value="uk">United Kingdom</option> | |
| <option value="france">France</option> | |
| <option value="japan">Japan</option> | |
| <!-- More countries would be added --> | |
| </select> | |
| </div> | |
| <div class="movie-duration"> | |
| <label class="block text-sm font-medium mb-2">Duration (minutes) *</label> | |
| <input type="number" min="1" class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-purple-500"> | |
| </div> | |
| </div> | |
| <div class="mb-6"> | |
| <label class="block text-sm font-medium mb-2">Categories *</label> | |
| <div class="grid grid-cols-2 md:grid-cols-4 gap-3"> | |
| <label class="flex items-center"> | |
| <input type="checkbox" value="action" class="mr-2"> | |
| Action | |
| </label> | |
| <label class="flex items-center"> | |
| <input type="checkbox" value="romance" class="mr-2"> | |
| Romance | |
| </label> | |
| <label class="flex items-center"> | |
| <input type="checkbox" value="horror" class="mr-2"> | |
| Horror | |
| </label> | |
| <label class="flex items-center"> | |
| <input type="checkbox" value="fantasy" class="mr-2"> | |
| Fantasy | |
| </label> | |
| <!-- More categories would be added --> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Series Information (Hidden by default) --> | |
| <div class="series-info mb-8" style="display: none;"> | |
| <h2 class="text-xl font-semibold mb-6 border-b border-gray-700 pb-2">Series Information</h2> | |
| <div class="grid grid-cols-1 md:grid-cols-2 gap-6 mb-6"> | |
| <div> | |
| <label class="block text-sm font-medium mb-2">Total Seasons</label> | |
| <input type="number" min="1" class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-purple-500"> | |
| </div> | |
| <div> | |
| <label class="block text-sm font-medium mb-2">Status</label> | |
| <select class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-purple-500"> | |
| <option value="ongoing">Ongoing</option> | |
| <option value="completed">Completed</option> | |
| <option value="cancelled">Cancelled</option> | |
| </select> | |
| </div> | |
| </div> | |
| <div class="series-episodes mb-6"> | |
| <label class="block text-sm font-medium mb-4">Episodes</label> | |
| <div class="space-y-4"> | |
| <div class="episode-item bg-gray-800 p-4 rounded-lg"> | |
| <div class="flex justify-between items-center mb-3"> | |
| <h4 class="font-medium">Season 1, Episode 1</h4> | |
| <button type="button" class="text-red-400 hover:text-red-300"> | |
| <i data-feather="x" class="w-4 h-4"></i> | |
| </button> | |
| </div> | |
| <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> | |
| <div> | |
| <label class="block text-xs mb-1">Episode Title</label> | |
| <input type="text" class="w-full bg-gray-700 border border-gray-600 rounded px-3 py-1 text-sm"> | |
| </div> | |
| <div> | |
| <label class="block text-xs mb-1">Duration (min)</label> | |
| <input type="number" min="1" class="w-full bg-gray-700 border border-gray-600 rounded px-3 py-1 text-sm"> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <button type="button" class="mt-4 text-purple-400 hover:text-purple-300 flex items-center"> | |
| <i data-feather="plus" class="w-4 h-4 mr-1"></i> Add Episode | |
| </button> | |
| </div> | |
| </div> | |
| <!-- Media --> | |
| <div class="mb-8"> | |
| <h2 class="text-xl font-semibold mb-6 border-b border-gray-700 pb-2">Media</h2> | |
| <div class="mb-6"> | |
| <label class="block text-sm font-medium mb-2">Poster Image *</label> | |
| <div class="border-2 border-dashed border-gray-600 rounded-lg p-8 text-center"> | |
| <i data-feather="upload" class="w-12 h-12 text-gray-500 mx-auto mb-4"></i> | |
| <p class="text-gray-400 mb-2">Drag & drop your image here or click to browse</p> | |
| <p class="text-sm text-gray-500">Recommended: 600x900px, JPG or PNG</p> | |
| <input type="file" accept="image/*" class="hidden" id="poster-upload"> | |
| <button type="button" onclick="document.getElementById('poster-upload').click()" class="mt-4 bg-gray-700 hover:bg-gray-600 px-4 py-2 rounded-lg text-sm"> | |
| Select Image | |
| </button> | |
| </div> | |
| </div> | |
| <div> | |
| <label class="block text-sm font-medium mb-2">Trailer URL (YouTube)</label> | |
| <input type="url" placeholder="https://youtube.com/..." class="w-full bg-gray-700 border border-gray-600 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-purple-500"> | |
| </div> | |
| </div> | |
| <!-- Submit --> | |
| <div class="text-center"> | |
| <button type="submit" class="bg-purple-600 hover:bg-purple-700 px-8 py-3 rounded-lg font-semibold transition"> | |
| Submit Content | |
| </button> | |
| </div> | |
| </form> | |
| </div> | |
| </div> | |
| </section> | |
| <!-- Footer --> | |
| <footer class="bg-gray-800 py-12"> | |
| <div class="max-w-7xl mx-auto px-4"> | |
| <div class="grid grid-cols-1 md:grid-cols-4 gap-8"> | |
| <div> | |
| <a href="index.html" class="flex items-center space-x-2 mb-4"> | |
| <i data-feather="film" class="text-purple-500"></i> | |
| <span class="font-bold text-xl">CineVerse</span> | |
| </a> | |
| <p class="text-gray-400">Discover and share films and series from around the world.</p> | |
| </div> | |
| <div> | |
| <h3 class="font-semibold text-lg mb-4">Explore</h3> | |
| <ul class="space-y-2"> | |
| <li><a href="browse.html" class="text-gray-400 hover:text-white transition">Browse All</a></li> | |
| <li><a href="browse.html?filter=category" class="text-gray-400 hover:text-white transition">By Category</a></li> | |
| <li><a href="browse.html?filter=country" class="text-gray-400 hover:text-white transition">By Country</a></li> | |
| </ul> | |
| </div> | |
| <div> | |
| <h3 class="font-semibold text-lg mb-4">Contribute</h3> | |
| <ul class="space-y-2"> | |
| <li><a href="add-post.html" class="text-gray-400 hover:text-white transition">Add Content</a></li> | |
| <li><a href="#" class="text-gray-400 hover:text-white transition">Guidelines</a></li> | |
| </ul> | |
| </div> | |
| <div> | |
| <h3 class="font-semibold text-lg mb-4">Connect</h3> | |
| <div class="flex space-x-4"> | |
| <a href="#" class="text-gray-400 hover:text-white transition"><i data-feather="facebook"></i></a> | |
| <a href="#" class="text-gray-400 hover:text-white transition"><i data-feather="twitter"></i></a> | |
| <a href="#" class="text-gray-400 hover:text-white transition"><i data-feather="instagram"></i></a> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="border-t border-gray-700 mt-8 pt-8 text-center text-gray-500"> | |
| <p>© 2023 CineVerse. All rights reserved.</p> | |
| </div> | |
| </div> | |
| </footer> | |
| <script> | |
| AOS.init(); | |
| feather.replace(); | |
| // Check if admin is logged in | |
| if (localStorage.getItem('adminLoggedIn') !== 'true') { | |
| window.location.href = 'login.html'; | |
| } | |
| // Toggle series information based on content type | |
| document.querySelectorAll('input[name="contentType"]').forEach(radio => { | |
| radio.addEventListener('change', function() { | |
| const seriesInfo = document.querySelector('.series-info'); | |
| const movieDuration = document.querySelector('.movie-duration'); | |
| if (this.value === 'series') { | |
| seriesInfo.style.display = 'block'; | |
| movieDuration.style.display = 'none'; | |
| document.getElementById('content-form').classList.add('series-active'); | |
| } else { | |
| seriesInfo.style.display = 'none'; | |
| movieDuration.style.display = 'block'; | |
| document.getElementById('content-form').classList.remove('series-active'); | |
| } | |
| }); | |
| }); | |
| // Form submission | |
| document.getElementById('content-form').addEventListener('submit', function(e) { | |
| e.preventDefault(); | |
| // Form validation and submission logic would go here | |
| alert('Content submitted successfully! It will be reviewed by an admin before publication.'); | |
| }); | |
| </script> | |
| </body> | |
| </html> | |