better-staridc-MNBT
1<?php
2mnbt_theme_include('head');
3if (!function_exists('notice_build_url')) {
4function notice_build_url($page, $overrides = []) {
5 $query = array_merge($_GET, $overrides, ['page' => $page]);
6 foreach($query as $key => $value) {
7 if($value === '' || $value === null) unset($query[$key]);
8 }
9 return 'notice.php?'.http_build_query($query);
10}
11}
12?>
13<div class="container-fluid p-t-15"><div class="row"><div class="col-lg-12"><div class="card">
14<div class="card-header"><h4>通知日志</h4><ul class="card-actions"><li><button class="btn btn-xs btn-primary" onclick="readAll()">全部已读</button></li></ul></div>
15<div class="card-body">
16<form class="form-inline m-b-15" method="get" action="notice.php">
17 <select class="form-control m-r-5 m-b-5" name="type">
18 <option value="">全部类型</option>
19 <?php foreach(['monitor'=>'监控','expire'=>'到期','traffic'=>'流量'] as $k=>$v): ?>
20 <option value="<?=$k?>" <?=$type===$k?'selected':''?>><?=$v?></option>
21 <?php endforeach; ?>
22 </select>
23 <select class="form-control m-r-5 m-b-5" name="level">
24 <option value="">全部等级</option>
25 <?php foreach(['info'=>'信息','success'=>'成功','warning'=>'警告','danger'=>'危险'] as $k=>$v): ?>
26 <option value="<?=$k?>" <?=$level===$k?'selected':''?>><?=$v?></option>
27 <?php endforeach; ?>
28 </select>
29 <select class="form-control m-r-5 m-b-5" name="read">
30 <option value="">全部状态</option>
31 <option value="false" <?=$read==='false'?'selected':''?>>未读</option>
32 <option value="true" <?=$read==='true'?'selected':''?>>已读</option>
33 </select>
34 <select class="form-control m-r-5 m-b-5" name="page_size">
35 <?php foreach([10,15,25,50,100] as $size): ?>
36 <option value="<?=$size?>" <?=$page_size===$size?'selected':''?>>每页<?=$size?>条</option>
37 <?php endforeach; ?>
38 </select>
39 <input class="form-control m-r-5 m-b-5" name="keyword" value="<?=htmlspecialchars($keyword)?>" placeholder="标题/内容关键词">
40 <button class="btn btn-primary m-r-5 m-b-5" type="submit">筛选</button>
41 <a class="btn btn-default m-b-5" href="notice.php">重置</a>
42</form>
43<div class="table-responsive">
44<table class="table table-bordered table-hover"><thead><tr><th>时间</th><th>类型</th><th>等级</th><th>标题</th><th>内容</th><th>状态</th><th>操作</th></tr></thead><tbody>
45<?php if(empty($logs)): ?><tr><td colspan="7" class="text-center text-muted">暂无通知</td></tr><?php else: foreach($logs as $l): ?>
46<?php $is_read = ($l['is_read'] ?? 'false') === 'true'; ?>
47<tr><td><?=htmlspecialchars($l['created_at'] ?? '')?></td><td><?=htmlspecialchars($l['type'] ?? '')?></td><td><?=htmlspecialchars($l['level'] ?? 'info')?></td><td><?=htmlspecialchars($l['title'] ?? '')?></td><td><?=htmlspecialchars($l['content'] ?? '')?></td><td><?=$is_read?'已读':'<span class="text-danger">未读</span>'?></td><td><?=$is_read?'-':'<button class="btn btn-xs btn-primary" onclick="readNotice('.intval($l['id'] ?? 0).')">已读</button>'?></td></tr>
48<?php endforeach; endif; ?>
49</tbody></table></div>
50<div class="d-flex justify-content-between align-items-center">
51 <div class="text-muted">共 <?=$total?> 条,第 <?=$page?> / <?=$total_pages?> 页</div>
52 <ul class="pagination m-0">
53 <li class="page-item <?=$page<=1?'disabled':''?>"><a class="page-link" href="<?=notice_build_url(max(1,$page-1))?>">上一页</a></li>
54 <?php
55 $start = max(1, $page - 2);
56 $end = min($total_pages, $page + 2);
57 for($p=$start; $p<=$end; $p++):
58 ?>
59 <li class="page-item <?=$p===$page?'active':''?>"><a class="page-link" href="<?=notice_build_url($p)?>"><?=$p?></a></li>
60 <?php endfor; ?>
61 <li class="page-item <?=$page>=$total_pages?'disabled':''?>"><a class="page-link" href="<?=notice_build_url(min($total_pages,$page+1))?>">下一页</a></li>
62 </ul>
63</div>
64</div></div></div></div></div>
65<script>
66function readNotice(id){$.post('./ajax.php',{gn:'notice_read',id:id},function(r){var j=JSON.parse(r);msalert(j.code=='操作成功'?1:4,j.code,1500);setTimeout(function(){location.reload()},1500);});}
67function readAll(){readNotice(0);}
68</script>