index.html
6.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<style type="text/css">
#searchfloat {position:absolute;top:40px;right:20px;background:#F7F0A0;padding:10px;}
#saved {position: relative;}
#saved_sql {position:absolute;bottom:0;height:300px;background:#F7F0A0;width:100%;overflow:auto;display:none;}
#saved_sql li {display:block;clear:both;width:100%;float:left;line-height:18px;padding:1px 0}
#saved_sql li a{float:left;text-decoration: none;display:block;padding:0 5px;}
#saved_sql li i{display:none;float:left;color:#06f;font-size: 14px;font-style: normal;margin-left:2px;line-height:18px;}
#saved_sql li:hover{background:#fff;}
#saved_sql li:hover i{display:block;cursor:pointer;}
#database #tablename {height:205px;width:100%;padding:5px;}
#database #tablename option{height:18px;}
#database #subaction {height:210px;width:100%;}
#database .select-striped > option:nth-of-type(odd) {background-color: #f9f9f9;}
#database .dropdown-menu ul {margin:-3px 0;}
#database .dropdown-menu ul li{margin:3px 0;}
#database .dropdown-menu.row .col-xs-6{padding:0 5px;}
#sqlquery {color:#444;}
#resultparent {padding:5px;}
</style>
<style data-render="darktheme">
body.darktheme #database .select-striped > option:nth-of-type(odd) {
background-color: #262626;
}
body.darktheme #tablename::-webkit-scrollbar {
width: 9px;
height: 9px;
}
body.darktheme #tablename::-webkit-scrollbar-thumb {
background: #999;
}
body.darktheme #tablename::-webkit-scrollbar-track {
background: #333;
}
body.darktheme #sqlquery {
color: #ccc;
}
</style>
<div class="panel panel-default panel-intro">
{:build_heading()}
<div class="panel-body">
<div id="database" class="tab-content">
<div class="tab-pane fade active in" id="one">
<div class="widget-body no-padding">
{if $auth->check('general/database/query')}
<div class="row">
<div class="col-xs-4">
<h4>{:__('SQL Result')}:</h4>
</div>
<div class="col-xs-8 text-right">
<form action="{:url('general.database/query')}" method="post" name="infoform" target="resultframe">
<input type="hidden" name="do_action" id="topaction" />
<a href="javascript:;" class="btn btn-success btn-compress"><i class="fa fa-compress"></i> {:__('数据备份')}</a>
<div class="btn-group">
<button data-toggle="dropdown" class="btn btn-primary btn-embossed dropdown-toggle" type="button">{:__('Basic query')} <span class="caret"></span></button>
<div class="row dropdown-menu pull-right" style="width:450px;">
<div class="col-xs-6" style="width: 300px;">
<select class="form-control select-striped" id="tablename" name="tablename[]" multiple="multiple">
{foreach $tables as $table}
<option value="{$table.name}" title="">{$table.name}<!--({$table.rows})--></option>
{/foreach}
</select>
</div>
<div class="col-xs-6" style="width: 150px;">
<ul id="subaction" class="list-unstyled">
<li><input type="submit" name="submit1" value="{:__('View structure')}" rel="viewinfo" class="btn btn-primary btn-embossed btn-sm btn-block"/></li>
<li><input type="submit" name="submit2" value="{:__('View data')}" rel="viewdata" class="btn btn-primary btn-embossed btn-sm btn-block"/></li>
</ul>
</div>
<div class="clear"></div>
</div>
</div>
</form>
</div>
</div>
<div class="well" id="resultparent">
<iframe name="resultframe" frameborder="0" id="resultframe" style="height:100%;" width="100%" height="100%"></iframe>
</div>
<form action="{:url('general.database/query')}" method="post" id="sqlexecute" name="form1" target="resultframe" style="display: none;">
<input type="hidden" name="do_action" value="doquery" />
<div class="form-group">
<textarea name="sqlquery" placeholder="{:__('Executes one or multiple queries which are concatenated by a semicolon')}" cols="60" rows="5" class="form-control" id="sqlquery"></textarea>
</div>
<button type="submit" class="btn btn-primary btn-embossed"><i class="fa fa-check"></i> {:__('Execute')}</button>
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
</form>
{else /}
<div id="backuplist"></div>
{/if}
</div>
</div>
</div>
</div>
</div>
<script id="backuptpl" type="text/html">
<p>
<a href="javascript:;" class="btn btn-success btn-backup"><i class="fa fa-compress"></i> {:__('Backup now')}</a>
<span class="text-danger">如果你的数据过大,不建议采用此方式进行备份,会导致内存溢出的错误。</span>
</p>
<table id="dt_basic" class="table table-striped table-bordered table-hover" width="100%" style="min-width:600px;">
<thead>
<tr>
<th>ID</th>
<th>{:__('File')}</th>
<th>{:__('Size')}</th>
<th>{:__('Date')}</th>
<th>{:__('Operate')}</th>
</tr>
</thead>
<tbody>
<%for (var i=0;i<backuplist.length;i++){%>
<tr>
<td><%=i+1%></td>
<td><%=backuplist[i].file%></td>
<td><%=backuplist[i].size%></td>
<td><%=backuplist[i].date%></td>
<td>
<a href="javascript:;" class="btn btn-danger btn-delete btn-xs" data-file="<%=backuplist[i].file%>"><i class="fa fa-times"></i> {:__('Delete')}</a>
</td>
</tr>
<%}%>
</tbody>
</table>
</script>