| <!DOCTYPE html><html lang="pt-BR"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Jornal Oliveira</title> |
| <style> |
| :root { |
| --bg-main: #C3CA92; |
| --card-bg: #A4B17B; |
| --card-bg-alt: #859864; |
| --header-bg: #697E50; |
| --button-bg: #697E50; |
| --text-main: #20331B; |
| --text-light: #FFFFFF; |
| --alert-bg: #e53e3e; |
| } |
| * { box-sizing: border-box; } |
| body { |
| margin:0; padding:0; |
| font-family: Arial, sans-serif; |
| background-color: var(--bg-main); |
| color: var(--text-main); |
| } |
| header { |
| background-color: var(--header-bg); |
| color: var(--text-light); |
| padding: 1rem; |
| text-align: center; |
| } |
| nav { |
| background-color: var(--header-bg); |
| padding: 0.5rem; |
| display: flex; |
| flex-wrap: wrap; |
| gap: 0.5rem; |
| justify-content: center; |
| } |
| nav button { |
| background-color: var(--button-bg); |
| color: var(--text-light); |
| border: none; |
| padding: 0.5rem 1rem; |
| border-radius: 4px; |
| cursor: pointer; |
| transition: background-color 0.3s; |
| } |
| nav button:hover { |
| background-color: var(--card-bg-alt); |
| } |
| .container { |
| max-width: 800px; |
| margin: 1rem auto; |
| padding: 0 1rem; |
| } |
| .card { |
| background-color: var(--card-bg); |
| padding: 1rem; |
| margin-bottom: 1rem; |
| border-radius: 8px; |
| box-shadow: 0 2px 4px rgba(0,0,0,0.1); |
| } |
| .hidden { display: none; } |
| input, select, textarea { |
| width: 100%; |
| padding: 0.5rem; |
| margin-bottom: 0.5rem; |
| border: 1px solid #ccc; |
| border-radius: 4px; |
| font-size: 1rem; |
| } |
| button.primary { |
| background-color: var(--button-bg); |
| color: var(--text-light); |
| } |
| footer { |
| background-color: var(--header-bg); |
| color: var(--text-light); |
| text-align: center; |
| padding: 1rem; |
| margin-top: 2rem; |
| } |
| .alert { |
| background-color: var(--alert-bg); |
| color: var(--text-light); |
| padding: 0.5rem; |
| border-radius: 4px; |
| margin-bottom: 0.5rem; |
| } |
| </style> |
| </head> |
| <body> |
| <header> |
| <h1>Jornal Oliveira</h1> |
| <p>Feito de alunos para alunos</p> |
| </header> |
| <nav> |
| <button onclick="filterArticles('Colunas')">Colunas</button> |
| <button onclick="filterArticles('Notícias da Escola')">Notícias da Escola</button> |
| <button onclick="filterArticles('Entrevistas')">Entrevistas</button> |
| <button onclick="filterArticles('Opinião')">Opinião</button> |
| <button onclick="filterArticles('Cultura e Arte')">Cultura e Arte</button> |
| <button onclick="filterArticles('Esportes')">Esportes</button> |
| <button onclick="filterArticles('Humor')">Humor</button> |
| <button onclick="filterArticles('Você Sabia?')">Você Sabia?</button> |
| <button onclick="filterArticles('Projetos e Grêmios')">Projetos e Grêmios</button> |
| <button onclick="filterArticles('Fala Estudante')">Fala Estudante</button> |
| <button onclick="filterArticles('Investigação')">Investigação</button> |
| <button id="openLogin" class="primary">Painel</button> |
| </nav><div class="container" id="articlesSection"> |
| <h2>Artigos Publicados</h2> |
| <div id="articlesList"></div> |
| </div><div id="loginModal" class="hidden"> |
| <div class="card" style="max-width:300px;margin:2rem auto;"> |
| <h3>Acesso ao Painel</h3> |
| <input id="accessCode" type="password" placeholder="Código de Acesso"> |
| <button id="loginSubmit" class="primary">Entrar</button> |
| <div id="loginError" class="alert hidden">Código inválido.</div> |
| </div> |
| </div><div class="container hidden" id="publishPanel"> |
| <div class="card"> |
| <h3>Publicar Nova Matéria</h3> |
| <input id="pubAuthor" type="text" placeholder="Seu Nome (obrigatório)"> |
| <input id="pubTitle" type="text" placeholder="Título da Matéria"> |
| <select id="pubCategory"> |
| <option value="">Selecione categoria</option> |
| </select> |
| <textarea id="pubContent" rows="5" placeholder="Conteúdo da matéria"></textarea> |
| <input id="pubParticipants" type="text" placeholder="Quem participou (opcional)"> |
| <button id="btnPublish" class="primary">Publicar</button> |
| </div> |
| </div><footer> |
| <p>Jornal Oliveira © 2025</p> |
| </footer><script> |
| const ACCESS_CODE = '1903A'; |
| const categories = ['Colunas','Notícias da Escola','Entrevistas','Opinião','Cultura e Arte','Esportes','Humor','Você Sabia?','Projetos e Grêmios','Fala Estudante','Investigação']; |
| let articles = JSON.parse(localStorage.getItem('jo_published') || '[]'); |
| |
| |
| window.addEventListener('DOMContentLoaded', () => { |
| const sel = document.getElementById('pubCategory'); |
| categories.forEach(c => { |
| const o = document.createElement('option'); o.value=c; o.textContent=c; |
| sel.appendChild(o); |
| }); |
| if(!articles.length){ |
| articles.push({ title:'Bem-vindo ao Jornal Oliveira!', author:'Equipe', date:new Date().toLocaleDateString('pt-BR'), category:'Colunas', content:'Primeira matéria do nosso jornal.' }); |
| localStorage.setItem('jo_published',JSON.stringify(articles)); |
| } |
| renderArticles(); |
| }); |
| |
| function renderArticles(filter='Todas'){ |
| const list=document.getElementById('articlesList'); list.innerHTML=''; |
| let arr=articles.slice().sort((a,b)=>new Date(b.date)-new Date(a.date)); |
| if(filter!=='Todas') arr=arr.filter(a=>a.category===filter); |
| if(!arr.length){ list.innerHTML='<p>Nenhuma matéria encontrada.</p>'; return; } |
| arr.forEach(a=>{ |
| const card=document.createElement('div'); card.className='card'; |
| card.innerHTML=`<h3>${a.title}</h3><p><strong>${a.author}</strong> - ${a.date} | <em>${a.category}</em></p><p>${a.content}</p>${a.participants?'<p><em>Participantes: '+a.participants+'</em></p>':''}`; |
| list.appendChild(card); |
| }); |
| } |
| function filterArticles(cat){ renderArticles(cat); } |
| |
| |
| document.getElementById('openLogin').onclick=()=>{ |
| document.getElementById('loginModal').classList.remove('hidden'); |
| }; |
| document.getElementById('loginSubmit').onclick=()=>{ |
| const code=document.getElementById('accessCode').value.trim(); |
| if(code===ACCESS_CODE){ |
| document.getElementById('loginModal').classList.add('hidden'); |
| document.getElementById('publishPanel').classList.remove('hidden'); |
| } else { |
| document.getElementById('loginError').classList.remove('hidden'); |
| } |
| }; |
| |
| |
| document.getElementById('btnPublish').onclick=()=>{ |
| const author=document.getElementById('pubAuthor').value.trim(); |
| const title=document.getElementById('pubTitle').value.trim(); |
| const category=document.getElementById('pubCategory').value; |
| const content=document.getElementById('pubContent').value.trim(); |
| const participants=document.getElementById('pubParticipants').value.trim(); |
| if(!author||!title||!category||!content){ alert('Preencha todos os campos obrigatórios!'); return; } |
| const newArt={ author,title,category,content,date:new Date().toLocaleDateString('pt-BR'),participants }; |
| articles.unshift(newArt); |
| localStorage.setItem('jo_published',JSON.stringify(articles)); |
| renderArticles(); alert('Matéria publicada!'); |
| document.getElementById('pubAuthor').value='';document.getElementById('pubTitle').value='';document.getElementById('pubContent').value='';document.getElementById('pubParticipants').value=''; |
| }; |
| </script><p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Rwhehhehe/teste-1-1" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| </html> |