diff --git a/Access_Logs.php b/Access_Logs.php index 167df3a..8f63d27 100644 --- a/Access_Logs.php +++ b/Access_Logs.php @@ -42,6 +42,7 @@ class Access_Logs { $ip = array_key_exists('ip', $filters) ? $filters['ip'] : ''; $ua = array_key_exists('ua', $filters) ? $filters['ua'] : ''; $cid = array_key_exists('cid', $filters) ? $filters['cid'] : ''; + $url = array_key_exists('url', $filters) ? $filters['url'] : ''; $path = array_key_exists('path', $filters) ? $filters['path'] : ''; $robot = array_key_exists('robot', $filters) ? $filters['robot'] : ''; $preset = array_key_exists('preset', $filters) ? $filters['preset'] : ''; @@ -59,6 +60,9 @@ class Access_Logs { if ($cid !== '') { $query->where('content_id' . $compare, $cid); } + if ($url !== $empty) { + $query->where('url' . $compare, $url); + } if ($path !== $empty) { $query->where('path' . $compare, $path); } @@ -95,6 +99,7 @@ class Access_Logs { 'ip' => $this->request->get('ip', ''), 'ua' => $this->request->get('ua', ''), 'cid' => $this->request->get('cid', ''), + 'url' => $this->request->get('url', ''), 'path' => $this->request->get('path', ''), 'robot' => $this->request->get('robot', ''), 'preset' => $this->request->get('preset', ''), @@ -163,6 +168,7 @@ class Access_Logs { $ip = $this->request->get('ip', ''); $ua = $this->request->get('ua', ''); $cid = $this->request->get('cid', ''); + $url = $this->request->get('url', ''); $path = $this->request->get('path', ''); $robot = $this->request->get('robot', ''); $preset = $this->request->get('preset', ''); @@ -174,11 +180,12 @@ class Access_Logs { } $counterQuery = $this->filterQueryBuilder($counterQuery, ['ids' => $ids], false); $operatorQuery = $this->filterQueryBuilder($operatorQuery, ['ids' => $ids], false); - } else if ($ip || $ua || $cid || $path || $robot || $preset) { + } else if ($ip || $ua || $cid || $url || $path || $robot || $preset) { $filters = array( 'ip' => $ip, 'ua' => $ua, 'cid' => $cid, + 'url' => $url, 'path' => $path, 'robot' => $robot, 'preset' => $preset, diff --git a/page/routes/logs/index.css b/page/routes/logs/index.css index be5696b..364793d 100644 --- a/page/routes/logs/index.css +++ b/page/routes/logs/index.css @@ -1,4 +1,6 @@ -a[data-action="search-anchor"] { +[data-action="search-anchor"], +[data-action="ua-information"], +[data-action="ip-information"] { cursor: pointer; } @@ -237,6 +239,42 @@ select.typecho-access-logs-filter-item__content { cursor: pointer; } +.typecho-access-logs-list-cell { + display: flex; + flex-wrap: wrap; + align-items: center; +} + +.typecho-access-logs-list-cell-item:first-child { + margin-right: 5px; +} + +.typecho-access-logs-list-cell-item-icon { + width: 18px; + height: 18px; + cursor: pointer; + opacity: .7; + background-size: 100% 100%; + background-position: center center; + background-repeat: no-repeat; +} + +.typecho-access-logs-list-cell-item-icon:hover { + opacity: 1; +} + +.typecho-access-logs-list-cell-item-information { + background-image: url("data:image/svg+xml;base64,PHN2ZyB0PSIxNjcwNTc1MDk3MDA4IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE0Mzk0IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTUxMi4wMDEgOTI4Ljk5N2MyMzAuNTI0IDAgNDE4LjA3Ni0xODcuNTUyIDQxOC4wNzUtNDE4LjA3NyAwLTIzMC41MjctMTg3LjU1Mi00MTguMDc3LTQxOC4wNzUtNDE4LjA3N3MtNDE4LjA3NyAxODcuNTUtNDE4LjA3NyA0MTguMDc3YzAgMjMwLjUyNSAxODcuNTUyIDQxOC4wNzcgNDE4LjA3NyA0MTguMDc3ek01MTIgMzAxLjg4YzI4Ljg2IDAgNTIuMjYgMjMuMzk5IDUyLjI2IDUyLjI2MyAwIDI4Ljg1OC0yMy4zOTkgNTIuMjU3LTUyLjI2IDUyLjI1N3MtNTIuMjYtMjMuMzk5LTUyLjI2LTUyLjI1N2MwLTI4Ljg2MyAyMy4zOTktNTIuMjYzIDUyLjI2LTUyLjI2M3pNNDU5Ljc0IDUxMC45MjJjMC0yOC44NiAyMy4zOTktNTIuMjYgNTIuMjYtNTIuMjZzNTIuMjYgMjMuMzk5IDUyLjI2IDUyLjI2djE1Ni43NzVjMCAyOC44Ni0yMy4zOTkgNTIuMjYtNTIuMjYgNTIuMjZzLTUyLjI2LTIzLjM5OS01Mi4yNi01Mi4yNnYtMTU2Ljc3NXoiIHAtaWQ9IjE0Mzk1IiBmaWxsPSIjMTI5NmRiIj48L3BhdGg+PC9zdmc+"); +} + +.typecho-access-logs-list-cell-item-search { + background-image: url("data:image/svg+xml;base64,PHN2ZyB0PSIxNjcwODM1ODQyODg4IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE4OTQ5IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTIzMi4xMDY2NjcgMjMyLjEwNjY2N2EzNTUuNTQxMzMzIDM1NS41NDEzMzMgMCAwIDEgNTMxLjI0MjY2NiA0NzAuOTEybDE2MS4yMzczMzQgMTYxLjE5NDY2NmE0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMSAxLTYwLjM3MzMzNCA2MC4zNzMzMzRsLTE4OS41NjgtMTg5LjYxMDY2N2E0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMCAxIDAtNjAuMzMwNjY3IDI3MC4yMDggMjcwLjIwOCAwIDEgMC05Mi44IDYwLjcxNDY2NyA0Mi42NjY2NjcgNDIuNjY2NjY3IDAgMSAxIDMwLjk3NiA3OS40ODhBMzU1LjYyNjY2NyAzNTUuNjI2NjY3IDAgMCAxIDIzMi4xNDkzMzMgMjMyLjE0OTMzM3oiIGZpbGw9IiMxMjk2ZGIiIHAtaWQ9IjE4OTUwIj48L3BhdGg+PHBhdGggZD0iTTQ4OS4wODggMzgyLjM3ODY2N2ExMDYuNjY2NjY3IDEwNi42NjY2NjcgMCAwIDAtMTA2LjY2NjY2NyAxMDYuNjY2NjY2IDQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDEtODUuMzMzMzMzIDAgMTkyIDE5MiAwIDAgMSAxOTItMTkyIDQyLjY2NjY2NyA0Mi42NjY2NjcgMCAwIDEgMCA4NS4zMzMzMzR6IiBmaWxsPSIjMTI5NmRiIiBwLWlkPSIxODk1MSI+PC9wYXRoPjwvc3ZnPg=="); +} + +.typecho-access-logs-list-cell-item-delete { + background-image: url("data:image/svg+xml;base64,PHN2ZyB0PSIxNjcwNTc0OTQxODMyIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEzMjc5IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTU4Ni4zODEwNTggMzIyLjczNDQwMiIgcC1pZD0iMTMyODAiIGZpbGw9IiNkODFlMDYiPjwvcGF0aD48cGF0aCBkPSJNMTkxLjkwMjY1OCAxNjguODgxMzM4bDYzOS42MDYyODMgMCAwIDg3LjAyMDkzNi02MzkuNjA2MjgzIDAgMC04Ny4wMjA5MzZaIiBwLWlkPSIxMzI4MSIgZmlsbD0iI2Q4MWUwNiI+PC9wYXRoPjxwYXRoIGQ9Ik03MDMuNTg3NDggMjMyLjg0MjA2OWMwIDIzLjA2MDIwNS02My45NjA3MzEgMjMuMDYwMjA1LTc0LjAwNjUyOCAyMi40NTMzODVMMzYxLjg0NjE4OCAyNTUuMjk1NDU0Yy00Mi4wMjIwNjkgMC42MDc4NDQtNDIuMDIyMDY5IDAuNjA3ODQ0LTQyLjAyMjA2OS0yMi40NTMzODVsMC0xNy44MzkyOTdjMC00OC4wNjA1OTkgMjUuOTczNTU4LTg3LjAyMDkzNiA1OC4wMTQyOTgtODcuMDIwOTM2bDI2Ny43MzQ3NjQgMGMzMi4wNDA3NCAwIDU4LjAxNDI5OCAzOC45NjAzMzcgNTguMDE0Mjk4IDg3LjAyMDkzNkw3MDMuNTg3NDggMjMyLjg0MjA2OXoiIHAtaWQ9IjEzMjgyIiBmaWxsPSIjZDgxZTA2Ij48L3BhdGg+PHBhdGggZD0iTTY4OC43NTM2MzMgMzE5Ljg2MzAwNSAzMzQuNjU3OTY2IDMxOS44NjMwMDVjLTE0LjgzMzg0NyAwLTc4Ljc5NDU3NyAwLTc4Ljc5NDU3NyAwbDAgNTExLjY4NDgyMmMwIDQzLjUxNzExOSAzNS4yNzc0NTggNjMuOTYwNzMxIDc4Ljc5NDU3NyA2My45NjA3MzFsMzU0LjA5NTY2NyAwYzQzLjUxNzExOSAwIDc4Ljc5NDU3Ny0yMC40NDM2MTEgNzguNzk0NTc3LTYzLjk2MDczMUw3NjcuNTQ4MjEgMzE5Ljg2MzAwNUM3NjcuNTQ4MjEgMzE5Ljg2MzAwNSA3MzIuMjcwNzUyIDMxOS44NjMwMDUgNjg4Ljc1MzYzMyAzMTkuODYzMDA1ek00NDcuNzQ1NTggNzY3LjU4ODExOSAzODMuNzg0ODUgNzY3LjU4ODExOSAzODMuNzg0ODUgNDQ3Ljc4NDQ2Nmw2My45NjA3MzEgMEw0NDcuNzQ1NTggNzY3LjU4ODExOXpNNjM5LjYyNzc3MiA3NjcuNTg4MTE5bC02My45NjA3MzEgMEw1NzUuNjY3MDQyIDQ0Ny43ODQ0NjZsNjMuOTYwNzMxIDBMNjM5LjYyNzc3MiA3NjcuNTg4MTE5eiIgcC1pZD0iMTMyODMiIGZpbGw9IiNkODFlMDYiPjwvcGF0aD48L3N2Zz4="); +} + .typecho-access-logs-pagination { list-style: none; float: right; diff --git a/page/routes/logs/index.js b/page/routes/logs/index.js index af54241..1b6e0a8 100644 --- a/page/routes/logs/index.js +++ b/page/routes/logs/index.js @@ -15,6 +15,7 @@ $(document).ready(function () { ua: $('[name="filter-ua"]').val(), ip: $('[name="filter-ip"]').val(), cid: $('[name="filter-cid"]').val(), + url: $('[name="filter-url"]').val(), path: $('[name="filter-path"]').val(), robot: $('[name="filter-robot"]').val(), preset: $('[name="filter-preset"]').val(), @@ -26,6 +27,7 @@ $(document).ready(function () { $('[name="filter-ua"]').val('ua' in filters ? filters.ua : ''); $('[name="filter-ip"]').val('ip' in filters ? filters.ip : ''); $('[name="filter-cid"]').val('cid' in filters ? filters.cid : ''); + $('[name="filter-url"]').val('url' in filters ? filters.url : ''); $('[name="filter-path"]').val('path' in filters ? filters.path : ''); $('[name="filter-robot"]').val('robot' in filters ? filters.robot : ''); $('[name="filter-preset"]').val('preset' in filters ? filters.preset : ''); @@ -96,28 +98,91 @@ $(document).ready(function () { $tr.append($td); // url $td = $('