if (isset($_GET['listar_links'])) {
require_once("controles/conexao.php");
header('Content-Type: application/json; charset=utf-8');
// Recebe os dados da requisição
$dados_requisicao = $_GET;
$colunas = [
0 => 'ID',
1 => 'logo',
2 => 'nome_link',
3 => 'Sinopse',
4 => 'nome'
];
// Query para contar o número de registros
$query_count = "SELECT COUNT(l.id_link) AS qnt_link
FROM link l
INNER JOIN categoria c ON c.id = l.id_categoria
WHERE (c.nome like '%SERIES |%' OR c.nome like '%SERIES @%' OR c.nome like '%NOVELA%' and c.nome not like '%Canais%' and c.nome not like '%FILMES%')";
if (!empty($dados_requisicao['search']['value'])) {
$query_count .= " AND (nome_link LIKE :nome_link)";
}
$query_count = $conexao2->prepare($query_count);
if (!empty($dados_requisicao['search']['value'])) {
$valor_pesq = "%" . $dados_requisicao['search']['value'] . "%";
$query_count->bindValue(':nome_link', $valor_pesq);
}
$query_count->execute();
$result_count = $query_count->fetch(PDO::FETCH_ASSOC);
$inicio = (int)$dados_requisicao['start'];
$quantidade = (int)$dados_requisicao['length'];
// Query para listar os registros com paginação
$list_query = "SELECT l.*, c.nome as nome
FROM link l
INNER JOIN categoria c ON c.id = l.id_categoria
WHERE (c.nome like '%SERIES |%' OR c.nome like '%SERIES @%' OR c.nome like '%NOVELA%' and c.nome not like '%Canais%' and c.nome not like '%FILMES%')";
if (!empty($dados_requisicao['search']['value'])) {
$list_query .= " AND (nome_link LIKE :nome_link) ";
}
$list_query .= " ORDER BY " . $colunas[$dados_requisicao['order'][0]['column']] . " " . $dados_requisicao['order'][0]['dir'] . " LIMIT :quantidade OFFSET :inicio";
$list_query = $conexao2->prepare($list_query);
$list_query->bindValue(':inicio', $inicio, PDO::PARAM_INT);
$list_query->bindValue(':quantidade', $quantidade, PDO::PARAM_INT);
if (!empty($dados_requisicao['search']['value'])) {
$valor_pesq = "%" . $dados_requisicao['search']['value'] . "%";
$list_query->bindValue(':nome_link', $valor_pesq);
}
// Executa a consulta
$list_query->execute();
// Prepara os dados para o formato JSON
$dados = [];
while ($row = $list_query->fetch(PDO::FETCH_ASSOC)) {
// Registros para tabela com Child rows
$registros_com_childs_rows = [
"ID" => $row['id_link'],
"Logo" => '<img src="'.$row['logo'].'"style="text-align:center; vertical-align:middle; width:45px; height:45px;" />',
"Titulo" => $row['nome_link'],
"Sinopse" => $row['sinopse'],
"Categoria" => $row['nome'],
"Link" => $row['link_link'],
"Exc" => '<button class="btn btn-outline-danger" onclick="removerConfirma('".$row['id_link']."','".$row['nome_link']."')"><i class="far fa-trash-alt"></i></button>',
"Alt" => '<td><button class="btn btn-outline-secondary" onclick="editarConfirma('".$row['id_link']."','".$row['nome_link']."','".$row['logo']."','".$row['link_link']."','".$row['sinopse']."','".$row['id_categoria']."')"><i class="fas fa-edit"></i></button>'
];
$dados[] = $registros_com_childs_rows;
}
$resultado = [
"draw" => intval($dados_requisicao['draw']),
"recordsTotal" => intval($result_count['qnt_link']),
"recordsFiltered" => intval($result_count['qnt_link']),
"data" => $dados
];
echo json_encode($resultado);
}
session_start();
require_once("controles/usuarios.php");
require_once("controles/links.php");
require_once("controles/categorias.php");
//include 'pagination.class.php';
if (checarUsuario()) {
require_once("cabecalho.php");
if($_SESSION['admin']){
}
//$links = listarlinks();
$categorias = listarCategoriastipo("series");
<style id="checkme">
.page-2content {
padding-left: 240px !important;
padding-right: 240px !important;
}
</style>
<div id="conteudo-painel" class="container">
<table id="data_table" class="display overflow-auto table" style="width: 100%;">
<thead class="table-dark">
<tr>
<th class='nomecol' style="width: 5%" scope="col" >#</th>
<th class='nomecol' style="width: 5%" scope="col" >Logo</th>
<th class='nomecol' style="width: 20%" scope="col" >Título</th>
<th class='nomecol' style="width: 20%" scope="col" >Sinopse</th>
<th class='nomecol' style="width: 20%" scope="col" >Categoria</th>
<th class='nomecol' scope="col" >Link</th>
<th class='nomecol' style="width: 5%" scope="col">Exc</th>
<th class='nomecol' style="width: 5%" scope="col">Alt</th>
</tr>
</thead>
</table>
</div>
</div>
</main>
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/2.0.7/css/dataTables.dataTables.css">
<script src="//cdn.datatables.net/2.0.7/js/dataTables.js"></script>
<style type="text/css">
.overflow-auto {
overflow: auto !important;
}
</style>
<script >
document.addEventListener("DOMContentLoaded", function() {
// Função para adicionar a classe 'overflow-auto' à div 'dt-layout-cell'
function addOverflowAuto() {
var wrapper = document.getElementById("data_table_wrapper");
if (wrapper) {
var layoutCell = wrapper.querySelector(".dt-layout-table");
var dt_control = wrapper.querySelector(".dt-control");
if (layoutCell) {
layoutCell.classList.add("overflow-auto");
//console.log("Classe 'overflow-auto' adicionada à div com a classe 'dt-layout-cell'");
}if (dt_control) {
dt_control.classList.remove("dt-ordering-desc");
//console.log("Classe 'dt-ordering-desc' removida da td com a classe 'dt-control'");
}
}
}
// Cria um MutationObserver para observar as mudanças no DOM
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
// Verifica se houve uma mudança no elemento com o id 'data_table_wrapper'
if (mutation.target.id === "data_table_wrapper") {
addOverflowAuto(); // Adiciona a classe 'overflow-auto'
//dt_search();
}
});
});
// Configura o MutationObserver para observar mudanças no DOM
observer.observe(document.body, { childList: true, subtree: true });
// Verifica e adiciona a classe 'overflow-auto' imediatamente após o DOM ser carregado
addOverflowAuto();
});
$(document).ready(function() {
function dt_search() {
$('#dt-search-0').addClass('col col-md-6 dt-input float-left form-control form-row').attr('placeholder', 'Pesquisar...');
$('.dt-search').addClass('form-row d-block');
var labelElement = document.querySelector('label[for="dt-search-0"]');
if (labelElement) {
labelElement.remove();
}
// Seleciona todos os elementos com a classe '.dt-search'
var dtSearchElements = document.querySelectorAll('.dt-search');
const novo_canal = document.getElementById('novo_canal');
if (!novo_canal) {
// Itera sobre cada elemento encontrado
dtSearchElements.forEach(function(dtSearchElement) {
// Seleciona o input dentro de cada elemento '.dt-search'
var inputElement = dtSearchElement.querySelector('input');
// Adiciona a classe 'form-row' ao input
if (inputElement) {
inputElement.classList.add('form-row');
// Cria o elemento <i> com os atributos especificados
var novoElemento = document.createElement('i');
novoElemento.innerHTML = ' Novo';
novoElemento.className = 'btn btn-outline-info col col-md-2 fa-user-plus fas float-right text-dark';
novoElemento.setAttribute('aria-hidden', 'true');
novoElemento.setAttribute('id', 'novo_canal');
novoElemento.setAttribute('onclick', "$('#cadastro').modal()");
// Insere o novo elemento após o input
inputElement.parentNode.insertBefore(novoElemento, inputElement.nextSibling);
}
});
}
}
var table = $('#data_table').DataTable({
ajax: '?listar_links',
processing: true,
serverSide: true,
language: {
url: '//cdn.datatables.net/plug-ins/1.10.13/i18n/Portuguese-Brasil.json'
},
search: {
searchPlaceholder: "Pesquisar..." // Placeholder para o campo de pesquisa
},
layout: {
topStart: null,
bottom: 'paging',
bottomStart: "info",
bottomEnd: null
},
columns: [
{
data: "ID",
className: "text-center"
}, // ID
{
orderable: false,
data: "Logo",
className: "text-center"
}, // URL
{
//orderable: false,
data: "Titulo",
className: "text-center"
}, // Logo URL
{
orderable: false,
data: "Sinopse",
className: "text-center"
},
{
//orderable: false,
data: "Categoria",
className: "text-center"
},
{
orderable: false,
data: "Link",
className: "text-center"
},
{
orderable: false,
data: "Exc",
className: "text-center acao"
},
{
orderable: false,
data: "Alt",
className: "text-center acao"
}, // Logo URL
],
order: [[2, 'asc']],
drawCallback: function() {
// Callback chamado após cada desenho da tabela (inclusive inicialização)
dt_search();
}
});
});
// Adiciona a classe 'form-control' ao campo de pesquisa
</script>
</div>
<div class="modal fade" id="cadastro" tabindex="-1" role="dialog" aria-labelledby="Cadastrar" aria-hidden="true" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Adicionar Conteúdo</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body" style="max-height:460px; overflow-y:auto;">
<form id="cadastro-form">
<div class="container">
<div class="form-group">
<label>Nome:</label>
<input type="text" class="form-control" name="nome" placeholder="Nome do Link" required autofocus>
</div>
<div class="form-group">
<label>Logo:</label>
<input type="text" class="form-control" name="logo" placeholder="Link da Imagem" required autofocus>
</div>
<div class="form-group">
<label>Url:</label>
<input type="text" class="form-control" name="link" placeholder="Url do Link" required autofocus>
</div>
<div class="form-group">
<label>Sinopse:</label>
<input type="text" class="form-control" name="sinopse" placeholder="Sinopse do Conteúdo" required autofocus>
</div>
<div class="form-group">
<label>Categoría:</label>
<div class="ml-0 row">
<select class="selectpicker" title="Categoria" name="categoria" required autofocus>
if ($categorias) {
foreach($categorias as $categoria) {
<option value="= $categoria['id']" > = $categoria['nome'] </option>
} }
</select>
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="submit" form="cadastro-form" class="btn btn-primary">Adicionar</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Fechar</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="remover" tabindex="-1" role="dialog" aria-labelledby="Cadastrar" aria-hidden="true" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Tem certeza?</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
<span aria-hidden="true">×</span>
</button>
</div>
<div id="remover-conteudo" class="modal-body"></div>
</div>
</div>
</div>
<div class="modal fade" id="editar" tabindex="-1" role="dialog" aria-labelledby="Cadastrar" aria-hidden="true" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Editar Conteúdo</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body" style="max-height:460px; overflow-y:auto;">
<form id="editar-form">
<div class="container">
<input type="hidden" name="id" id="idE">
<div class="form-group">
<label>Nome:</label>
<input type="text" class="form-control" id="nomeE" name="nome" placeholder="Nome do Link" required autofocus>
</div>
<div class="form-group">
<label>Logo:</label>
<input type="text" class="form-control" id="logoE" name="logo" placeholder="Link da Imagem" required autofocus>
</div>
<div class="form-group">
<label>Url:</label>
<input type="text" class="form-control" id="linkE" name="link" placeholder="Url do Link" required autofocus>
</div>
<div class="form-group">
<label>Sinopse:</label>
<input type="text" class="form-control" id="sinopseE" name="sinopse" placeholder="Sinopse do Conteúdo" required autofocus>
</div>
<div class="form-group">
<label>Categoría:</label>
<div class="ml-0 row">
<select class="selectpicker" title="Categoría" id="categoriaE" name="categoria" required autofocus>
if ($categorias) {
foreach($categorias as $categoria) {
<option value="= $categoria['id']" > = $categoria['nome'] </option>
} }
</select>
</div>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button type="submit" form="editar-form" class="btn btn-primary">Editar</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">Fechar</button>
</div>
</div>
</div>
</div>
</body>
<script>
function removerConfirma(id,nome) {
$('#remover-conteudo').html('<div class="alert alert-danger" role="alert"><strong> Remover </strong>' + nome + '?</div><button type="button" class="btn btn-secondary float-right" style="margin-left:10px" data-dismiss="modal">Fechar</button><button onclick="remover(' + id + ')" type="submit" class="btn btn-danger float-right">Remover</button>');
$('#remover').modal();
}
function editarConfirma(id,nome, logo, link, sinopse, categoria) {
$('#idE').val(id);
$('#nomeE').val(nome);
$('#logoE').val(logo);
$('#linkE').val(link);
$('#sinopseE').val(sinopse);
if (categoria !== "") {
$('#categoriaE').val(categoria);
$('#categoriaE').selectpicker('render');
}
$('#editar').modal();
}
function remover(id) {
$.ajax({
type: "POST",
url: "controles/remover-link.php",
data: {id: id},
success: function(data) {
$("#remover").modal('hide');
data_table = $('#data_table').DataTable();
var pagina_atual = data_table.page(); // Armazena a página atual
// Atualiza a tabela
data_table.draw();
// Restaura a página após a atualização
data_table.page(pagina_atual).draw('page');
}
});
}
$( "#cadastro-form" ).submit(function( event ) {
$.ajax({
type: "POST",
url: "controles/adicionar-link.php",
data: $("#cadastro-form").serialize(),
success: function(data) {
$("#cadastro").modal('hide');
data_table = $('#data_table').DataTable();
var pagina_atual = data_table.page(); // Armazena a página atual
// Atualiza a tabela
data_table.draw();
// Restaura a página após a atualização
data_table.page(pagina_atual).draw('page');
},
error: function (data) {
resultado(data.responseText);
}
});
event.preventDefault();
});
$( "#editar-form" ).submit(function( event ) {
$.ajax({
type: "POST",
url: "controles/editar-link.php",
data: $("#editar-form").serialize(),
success: function(data) {
$("#editar").modal('hide');
data_table = $('#data_table').DataTable();
var pagina_atual = data_table.page(); // Armazena a página atual
// Atualiza a tabela
data_table.draw();
// Restaura a página após a atualização
data_table.page(pagina_atual).draw('page');
},
error: function (data) {
resultado(data.responseText);
}
});
event.preventDefault();
});
speed_to_top = 1000;
$('#totop').click(function () {
$('body,html').animate({
scrollTop: 0
}, speed_to_top);
return false;
});
$('#totop').hide();
$(window).scroll(function () {
if ($(this).scrollTop() > 50) {
$('#totop').fadeIn();
} else {
$('#totop').fadeOut();
}
});
</script>
require_once("comum.php");
require_once("alerta.php");
</html>
} else {
header("Location: login");
die();
}//Generated by Ampare PHP Encoder. For more security please use php protect before encode the php program
© 2023 Quttera Ltd. All rights reserved.