{"id":969,"date":"2025-10-09T21:40:06","date_gmt":"2025-10-09T21:40:06","guid":{"rendered":"https:\/\/desarrollo-web.ddns.net\/matrix\/?page_id=969"},"modified":"2025-10-14T18:14:49","modified_gmt":"2025-10-14T18:14:49","slug":"activity-log","status":"publish","type":"page","link":"https:\/\/desarrollo-web.ddns.net\/matrix\/activity-log\/","title":{"rendered":"Activity log"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"969\" class=\"elementor elementor-969\" data-elementor-settings=\"{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a592ff1 e-con-full e-flex e-con e-parent\" data-id=\"a592ff1\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;video&quot;,&quot;background_video_link&quot;:&quot;https:\\\/\\\/desarrollo-web.ddns.net\\\/matrix\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/fondo-video1.mp4&quot;,&quot;background_play_on_mobile&quot;:&quot;yes&quot;,&quot;_ha_eqh_enable&quot;:false}\">\n\t\t<div class=\"elementor-background-video-container\">\n\t\t\t\t\t\t\t<video class=\"elementor-background-video-hosted\" role=\"presentation\" autoplay muted playsinline loop><\/video>\n\t\t\t\t\t<\/div>\t\t<div class=\"elementor-element elementor-element-8e0cd8d elementor-hidden-desktop elementor-widget elementor-widget-spacer\" data-id=\"8e0cd8d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bc28683 elementor-widget elementor-widget-shortcode\" data-id=\"bc28683\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t    <style>\n    .px-wrap { font-family:Inter,system-ui; background:#0b1020; color:#e6eeff; padding:20px; border-radius:16px; }\n    .px-title { font-size:1.8rem; font-weight:500; text-transform:uppercase; margin-bottom:10px; }\n    .px-search { margin-bottom:10px; }\n    .px-search input { padding:6px; border-radius:6px; border:none; width:250px; }\n    .px-table { width:100%; border-collapse:collapse; background:#121a34; border-radius:12px; overflow:hidden; }\n    .px-table th, .px-table td { padding:10px; border-bottom:1px solid #6587ff; text-align:center; }\n    .px-table th { background:#0f1733; color:#8aa0d1; position:sticky; top:0; }\n    .px-pagination { margin-top:15px; text-align:center; }\n    .px-btn { padding:8px 14px; border-radius:12px; border:none; color:#fff; background:#5b8cff; cursor:pointer; margin:0 4px; }\n    .px-btn:disabled { opacity:0.4; cursor:not-allowed; }\n    <\/style>\n\n    <div class=\"px-wrap\">\n      <div class=\"px-title\">REGISTRO DE ACTIVIDAD<\/div>\n      <div class=\"px-search\">\n        <input type=\"text\" id=\"pxSearch\" placeholder=\"Buscar...\">\n      <\/div>\n      <div style=\"overflow:auto;\">\n        <table class=\"px-table\">\n          <thead>\n            <tr>\n              <th>ID<\/th>\n              <th>Usuario ID<\/th>\n              <th>Nombre<\/th>\n              <th>Tipo Actividad<\/th>\n              <th>Descripci\u00f3n<\/th>\n              <th>IP<\/th>\n              <th>Fecha y Hora<\/th>\n              <th>P\u00e1gina URL<\/th>\n              <th>P\u00e1gina T\u00edtulo<\/th>\n            <\/tr>\n          <\/thead>\n          <tbody id=\"pxTableBody\">\n          <\/tbody>\n        <\/table>\n      <\/div>\n      <div class=\"px-pagination\">\n        <button class=\"px-btn\" id=\"pxPrev\" disabled>Anterior<\/button>\n        <span id=\"pxPageInfo\">P\u00e1gina 1<\/span>\n        <button class=\"px-btn\" id=\"pxNext\" disabled>Siguiente<\/button>\n      <\/div>\n    <\/div>\n\n    <script>\n    document.addEventListener('DOMContentLoaded', () => {\n        const ajaxurl = \"https:\/\/desarrollo-web.ddns.net\/matrix\/wp-admin\/admin-ajax.php\";\n        const nonce = \"0903af3441\";\n        const perPage = 10;\n        let currentPage = 1;\n        let totalPages = 1;\n        let searchTerm = '';\n\n        const tbody = document.getElementById('pxTableBody');\n        const prevBtn = document.getElementById('pxPrev');\n        const nextBtn = document.getElementById('pxNext');\n        const pageInfo = document.getElementById('pxPageInfo');\n        const searchInput = document.getElementById('pxSearch');\n\n        function loadPage(page) {\n            const fd = new FormData();\n            fd.append('action','activity_log_load');\n            fd.append('_wpnonce', nonce);\n            fd.append('page', page);\n            fd.append('search', searchTerm);\n\n            fetch(ajaxurl, {method:'POST', body:fd})\n                .then(r => r.json())\n                .then(data => {\n                    tbody.innerHTML = '';\n                    if(!data.rows.length){\n                        tbody.innerHTML = '<tr><td colspan=\"9\">Sin resultados<\/td><\/tr>';\n                        totalPages = 1;\n                    } else {\n                        data.rows.forEach(r=>{\n                            const tr = document.createElement('tr');\n                            tr.innerHTML = `\n                                <td>${r._ID}<\/td>\n                                <td>${r.usuario_id}<\/td>\n                                <td>${r.usuario_nombre}<\/td>\n                                <td>${r.tipo_actividad}<\/td>\n                                <td>${r.descripcion}<\/td>\n                                <td>${r.direccion_ip}<\/td>\n                                <td>${r.fecha_hora}<\/td>\n                                <td><a href=\"${r.pagina_url}\" target=\"_blank\" style=\"color:#9bf;\">${r.pagina_url}<\/a><\/td>\n                                <td>${r.pagina_titulo}<\/td>\n                            `;\n                            tbody.appendChild(tr);\n                        });\n                        totalPages = data.total_pages;\n                    }\n                    currentPage = page;\n                    pageInfo.textContent = `P\u00e1gina ${currentPage} de ${totalPages}`;\n                    prevBtn.disabled = currentPage <= 1;\n                    nextBtn.disabled = currentPage >= totalPages;\n                });\n        }\n\n        prevBtn.addEventListener('click', ()=>{ if(currentPage>1) loadPage(currentPage-1); });\n        nextBtn.addEventListener('click', ()=>{ if(currentPage<totalPages) loadPage(currentPage+1); });\n\n        searchInput.addEventListener('input', ()=>{\n            searchTerm = searchInput.value.trim();\n            loadPage(1);\n        });\n\n        loadPage(1);\n    });\n    <\/script>\n    \t\t<div class=\"elementor-shortcode\"><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":9,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-969","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/desarrollo-web.ddns.net\/matrix\/wp-json\/wp\/v2\/pages\/969","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/desarrollo-web.ddns.net\/matrix\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/desarrollo-web.ddns.net\/matrix\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/desarrollo-web.ddns.net\/matrix\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/desarrollo-web.ddns.net\/matrix\/wp-json\/wp\/v2\/comments?post=969"}],"version-history":[{"count":0,"href":"https:\/\/desarrollo-web.ddns.net\/matrix\/wp-json\/wp\/v2\/pages\/969\/revisions"}],"wp:attachment":[{"href":"https:\/\/desarrollo-web.ddns.net\/matrix\/wp-json\/wp\/v2\/media?parent=969"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}