|
<!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> |