Merge branch 'master' of http://114.215.101.231:8099/outsource/signUpForCar
Conflicts: data/runtime/log/201808/24.log
正在显示
58 个修改的文件
包含
4772 行增加
和
2 行删除
data/runtime/log/201808/24.log
0 → 100644
此 diff 太大无法显示。
1 | -{"expire_time":1535098257,"access_token":"13_2_GmA0S3toG8YfnrZWa1sa5slrEGqbQ10d0YG7C1cmS_Bd4PJScMQRdmb1ifs5REsUN1pgj8So1Mj4Y6PLwdpRHaGceDq6FZuyG3X8_14LzERc61BikLemp5H8547NXx1TnzRivmVrwxqBkKLGGbAEARMM"} | ||
1 | +{"expire_time":1535105260,"access_token":"13_KYPPX7-uAb8I-G74iy5FohnWyI-bXSj4ZqAk4_gOsZGuozoYTneKP5glgYf-U-tYByzuNrwDD_oTj6WxPL4s07t7iccbgSt6ZXBIQgXkwQGkyy1Nm-LD8Z7T38cU78uoEYKdo1WDRe9VSClAHBJbAIACWE"} |
1 | +<include file="public@header"/> | ||
2 | +<link rel="stylesheet" href="/static/scr/zoomify/bootstrap-grid.min.css"> | ||
3 | +<link rel="stylesheet" href="/static/scr/zoomify/dist/zoomify.css"> | ||
4 | +</head> | ||
5 | +<body> | ||
6 | +<div class="wrap js-check-wrap"> | ||
7 | + | ||
8 | + <ul class="nav nav-tabs"> | ||
9 | + <li class="active"><a href="javascript:;">所有文章</a></li> | ||
10 | + </ul> | ||
11 | + <form class="well form-inline margin-top-20" method="post" action="{:url('listing')}"> | ||
12 | + | ||
13 | + 教练姓名: | ||
14 | + <input type="text" class="form-control" name="name" style="width: 200px;" | ||
15 | + value="{$keyword|default=''}" placeholder="请输入姓名..."> | ||
16 | + <input type="submit" class="btn btn-primary" value="搜索"/> | ||
17 | + <a class="btn btn-danger" href="{:url('listing')}">清空</a> | ||
18 | + </form> | ||
19 | + <form class="js-ajax-form" action="" method="post"> | ||
20 | + <!--<div class="table-actions">--> | ||
21 | + | ||
22 | + <!--<button class="btn btn-primary btn-sm js-ajax-submit" type="submit"--> | ||
23 | + <!--data-action="{:url('AdminArticle/top',array('yes'=>1))}" data-subcheck="true">置顶--> | ||
24 | + <!--</button>--> | ||
25 | + <!--<button class="btn btn-primary btn-sm js-ajax-submit" type="submit"--> | ||
26 | + <!--data-action="{:url('AdminArticle/top',array('no'=>1))}" data-subcheck="true">取消置顶--> | ||
27 | + <!--</button>--> | ||
28 | + <!--<button class="btn btn-danger btn-sm js-ajax-submit" type="submit"--> | ||
29 | + <!--data-action="{:url('AdminArticle/delete')}" data-subcheck="true" data-msg="您确定删除吗?">--> | ||
30 | + <!--{:lang('DELETE')}--> | ||
31 | + <!--</button>--> | ||
32 | + <!--</div>--> | ||
33 | + <table class="table table-hover table-bordered table-list"> | ||
34 | + <thead> | ||
35 | + <tr> | ||
36 | + <th width="50">ID</th> | ||
37 | + <th width="50">教练</th> | ||
38 | + <th width="50">学员</th> | ||
39 | + <th width="50">预约时间</th> | ||
40 | + <th width="50">预约时段</th> | ||
41 | + <th width="50">预定时间</th> | ||
42 | + <th width="50">状态</th> | ||
43 | + <!--<th width="120">操作</th>--> | ||
44 | + </tr> | ||
45 | + </thead> | ||
46 | + <foreach name="list" item="vo"> | ||
47 | + <tr> | ||
48 | + <td><b>{$vo.id}</b></td> | ||
49 | + <td>{$vo.user_nickname}</td> | ||
50 | + <td>{$vo.uid|id_name}</td> | ||
51 | + <td>{$vo.yuyue_day1}</td> | ||
52 | + <td>{$vo.yuyue_hour1}</td> | ||
53 | + <td> | ||
54 | + <notempty name="vo.create_time"> | ||
55 | + {:date('Y-m-d H:i',$vo['create_time'])} | ||
56 | + </notempty> | ||
57 | + | ||
58 | + </td> | ||
59 | + <td>{$vo.status|yuyue_status_name}</td> | ||
60 | + <!--<td>--> | ||
61 | + <!--<a href="{:url('edit',array('id'=>$vo['id']))}">查看/编辑</a>--> | ||
62 | + <!--<a href="{:url('delete',array('id'=>$vo['id']))}" class="js-ajax-delete">{:lang('DELETE')}</a>--> | ||
63 | + <!--</td>--> | ||
64 | + </tr> | ||
65 | + </foreach> | ||
66 | + | ||
67 | + </table> | ||
68 | + | ||
69 | + <ul class="pagination">{$page|default=''}</ul> | ||
70 | + </form> | ||
71 | +</div> | ||
72 | +<script src="__STATIC__/js/admin.js"></script> | ||
73 | +<script> | ||
74 | + | ||
75 | + function reloadPage(win) { | ||
76 | + win.location.reload(); | ||
77 | + } | ||
78 | + | ||
79 | + $(function () { | ||
80 | + setCookie("refersh_time", 0); | ||
81 | + Wind.use('ajaxForm', 'artDialog', 'iframeTools', function () { | ||
82 | + //批量复制 | ||
83 | + $('.js-articles-copy').click(function (e) { | ||
84 | + var ids = []; | ||
85 | + $("input[name='ids[]']").each(function () { | ||
86 | + if ($(this).is(':checked')) { | ||
87 | + ids.push($(this).val()); | ||
88 | + } | ||
89 | + }); | ||
90 | + | ||
91 | + if (ids.length == 0) { | ||
92 | + art.dialog.through({ | ||
93 | + id: 'error', | ||
94 | + icon: 'error', | ||
95 | + content: '您没有勾选信息,无法进行操作!', | ||
96 | + cancelVal: '关闭', | ||
97 | + cancel: true | ||
98 | + }); | ||
99 | + return false; | ||
100 | + } | ||
101 | + | ||
102 | + ids = ids.join(','); | ||
103 | + art.dialog.open("__ROOT__/index.php?g=portal&m=AdminArticle&a=copy&ids=" + ids, { | ||
104 | + title: "批量复制", | ||
105 | + width: "300px" | ||
106 | + }); | ||
107 | + }); | ||
108 | + //批量移动 | ||
109 | + $('.js-articles-move').click(function (e) { | ||
110 | + var ids = []; | ||
111 | + $("input[name='ids[]']").each(function () { | ||
112 | + if ($(this).is(':checked')) { | ||
113 | + ids.push($(this).val()); | ||
114 | + } | ||
115 | + }); | ||
116 | + | ||
117 | + if (ids.length == 0) { | ||
118 | + art.dialog.through({ | ||
119 | + id: 'error', | ||
120 | + icon: 'error', | ||
121 | + content: '您没有勾选信息,无法进行操作!', | ||
122 | + cancelVal: '关闭', | ||
123 | + cancel: true | ||
124 | + }); | ||
125 | + return false; | ||
126 | + } | ||
127 | + | ||
128 | + ids = ids.join(','); | ||
129 | + art.dialog.open("__ROOT__/index.php?g=portal&m=AdminArticle&a=move&old_term_id={$term.term_id|default=0}&ids=" + ids, { | ||
130 | + title: "批量移动", | ||
131 | + width: "300px" | ||
132 | + }); | ||
133 | + }); | ||
134 | + }); | ||
135 | + }); | ||
136 | +</script> | ||
137 | +<script src="http://www.jq22.com/jquery/1.11.1/jquery.min.js"></script> | ||
138 | +<script src="/static/src/zoomify/zoomify.js"></script> | ||
139 | +<script type="text/javascript"> | ||
140 | + $('.example img').zoomify(); | ||
141 | +</script> | ||
142 | +</body> | ||
143 | +</html> |
1 | +<!DOCTYPE html> | ||
2 | +<html> | ||
3 | +<head> | ||
4 | + <meta charset="utf-8"> | ||
5 | + <!-- Set render engine for 360 browser --> | ||
6 | + <meta name="renderer" content="webkit"> | ||
7 | + <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
8 | + <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
9 | + | ||
10 | + <!-- HTML5 shim for IE8 support of HTML5 elements --> | ||
11 | + <!--[if lt IE 9]> | ||
12 | + <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> | ||
13 | + <![endif]--> | ||
14 | + | ||
15 | + | ||
16 | + <link href="__TMPL__/public/assets/themes/{:cmf_get_admin_style()}/bootstrap.min.css" rel="stylesheet"> | ||
17 | + <link href="__TMPL__/public/assets/simpleboot3/css/simplebootadmin.css" rel="stylesheet"> | ||
18 | + <link href="__STATIC__/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css"> | ||
19 | + <!--[if lt IE 9]> | ||
20 | + <script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script> | ||
21 | + <![endif]--> | ||
22 | + <style> | ||
23 | + form .input-order { | ||
24 | + margin-bottom: 0px; | ||
25 | + padding: 0 2px; | ||
26 | + width: 42px; | ||
27 | + font-size: 12px; | ||
28 | + } | ||
29 | + | ||
30 | + form .input-order:focus { | ||
31 | + outline: none; | ||
32 | + } | ||
33 | + | ||
34 | + .table-actions { | ||
35 | + margin-top: 5px; | ||
36 | + margin-bottom: 5px; | ||
37 | + padding: 0px; | ||
38 | + } | ||
39 | + | ||
40 | + .table-list { | ||
41 | + margin-bottom: 0px; | ||
42 | + } | ||
43 | + | ||
44 | + .form-required { | ||
45 | + color: red; | ||
46 | + } | ||
47 | + </style> | ||
48 | + <script type="text/javascript"> | ||
49 | + //全局变量 | ||
50 | + var GV = { | ||
51 | + ROOT: "__ROOT__/", | ||
52 | + WEB_ROOT: "__WEB_ROOT__/", | ||
53 | + JS_ROOT: "static/js/", | ||
54 | + APP: '{$Request.module}'/*当前应用名*/ | ||
55 | + }; | ||
56 | + </script> | ||
57 | + <script src="__TMPL__/public/assets/js/jquery-1.10.2.min.js"></script> | ||
58 | + <script src="__STATIC__/js/wind.js"></script> | ||
59 | + <script src="__TMPL__/public/assets/js/bootstrap.min.js"></script> | ||
60 | + <script> | ||
61 | + Wind.css('artDialog'); | ||
62 | + Wind.css('layer'); | ||
63 | + // $(function () { | ||
64 | + // $("[data-toggle='tooltip']").tooltip({ | ||
65 | + // container:'body', | ||
66 | + // html:true, | ||
67 | + // }); | ||
68 | + // $("li.dropdown").hover(function () { | ||
69 | + // $(this).addClass("open"); | ||
70 | + // }, function () { | ||
71 | + // $(this).removeClass("open"); | ||
72 | + // }); | ||
73 | + // }); | ||
74 | + </script> | ||
75 | + <if condition="APP_DEBUG"> | ||
76 | + <style> | ||
77 | + #think_page_trace_open { | ||
78 | + z-index: 9999; | ||
79 | + } | ||
80 | + </style> | ||
81 | + </if> | ||
82 | + <link rel="stylesheet" href="/static/scr/zoomify/bootstrap-grid.min.css"> | ||
83 | + <!--<link rel="stylesheet" href="/static/scr/zoomify/dist/zoomify.css">--> | ||
84 | + <style> | ||
85 | + .slecet-box { | ||
86 | + width: 50%; | ||
87 | + } | ||
88 | + | ||
89 | + .slecet-box select { | ||
90 | + width: 30%; | ||
91 | + } | ||
92 | + | ||
93 | + .time-box { | ||
94 | + width: 80%; | ||
95 | + margin: 10px auto 0 auto; | ||
96 | + overflow: hidden; | ||
97 | + } | ||
98 | + | ||
99 | + .time-box span { | ||
100 | + display: inline-block; | ||
101 | + width: 24%; | ||
102 | + height: 44px; | ||
103 | + line-height: 44px; | ||
104 | + text-align: center; | ||
105 | + border: 1px solid red; | ||
106 | + border-radius: 5px; | ||
107 | + color: red; | ||
108 | + float: left; | ||
109 | + margin-right: 1.2%; | ||
110 | + margin-top: 10px; | ||
111 | + } | ||
112 | + | ||
113 | + .time-box span:nth-child(4n) { | ||
114 | + margin-right: 0; | ||
115 | + } | ||
116 | + | ||
117 | + .time-box .acv { | ||
118 | + color: #6589de; | ||
119 | + border: 1px solid #6589de; | ||
120 | + } | ||
121 | + | ||
122 | + .save { | ||
123 | + display: block; | ||
124 | + width: 300px; | ||
125 | + text-align: center; | ||
126 | + height: 50px; | ||
127 | + line-height: 50px; | ||
128 | + color: #fff; | ||
129 | + background-color: #6589de; | ||
130 | + font-size: 18px; | ||
131 | + margin: 50px auto 0 auto; | ||
132 | + border-radius: 5px; | ||
133 | + } | ||
134 | + | ||
135 | + .save:hover { | ||
136 | + color: #fff; | ||
137 | + background-color: #3a4d7b; | ||
138 | + text-decoration: none; | ||
139 | + } | ||
140 | + | ||
141 | + .time-box .bg-colo { | ||
142 | + background-color: #6589de; | ||
143 | + color: #fff; | ||
144 | + } | ||
145 | + </style> | ||
146 | +</head> | ||
147 | +<body> | ||
148 | +<div class="wrap js-check-wrap"> | ||
149 | + <ul class="nav nav-tabs"> | ||
150 | + <li class="active"><a href="javascript:;">预约时间设置</a></li> | ||
151 | + </ul> | ||
152 | + <form class="well form-inline margin-top-20" method="post" action="{:url('tag')}"> | ||
153 | + 教练列表: | ||
154 | + <select class="form-control" id="teacher" name="type" style="width: 140px;"> | ||
155 | + <noempty name="pcdata"> | ||
156 | + <option value='{$pcdata.id}' checked>{$pcdata.user_nickname}</option> | ||
157 | + </noempty> | ||
158 | + <option value='-1'>全部</option> | ||
159 | + <foreach name="cdata" id="vo"> | ||
160 | + <option value='{$vo.id}'>{$vo.user_nickname}</option> | ||
161 | + </foreach> | ||
162 | + </select> | ||
163 | + | ||
164 | + 时间 | ||
165 | + <select class="form-control" id="time" style="width: 140px;"> | ||
166 | + <option value="-1">请选择</option> | ||
167 | + <foreach name="day" id="vo"> | ||
168 | + <option value='{$vo}'>{$vo}</option> | ||
169 | + </foreach> | ||
170 | + </select> | ||
171 | + </form> | ||
172 | + 请选择时间段,红色为不可预约时间 | ||
173 | + <div class="time-box"> | ||
174 | + <span data-id="0">06:00-07:00</span> | ||
175 | + <span data-id="0">07:00-08:00</span> | ||
176 | + <span data-id="1">08:00-09:00</span> | ||
177 | + <span data-id="2">09:00-10:00</span> | ||
178 | + <span data-id="3">10:00-11:00</span> | ||
179 | + <span data-id="4">11:00-12:00</span> | ||
180 | + <span data-id="5">12:00-13:00</span> | ||
181 | + <span data-id="6">13:00-14:00</span> | ||
182 | + <span data-id="7">14:00-15:00</span> | ||
183 | + <span data-id="8">15:00-16:00</span> | ||
184 | + <span data-id="9">16:00-17:00</span> | ||
185 | + <span data-id="10">17:00-18:00</span> | ||
186 | + </div> | ||
187 | + <a class="save">保存设置</a> | ||
188 | +</div> | ||
189 | +<script src="/static/layer/layer.js"></script> | ||
190 | +<script src="__STATIC__/js/admin.js"></script> | ||
191 | +<script> | ||
192 | + | ||
193 | + function reloadPage(win) { | ||
194 | + win.location.reload(); | ||
195 | + } | ||
196 | + | ||
197 | + $(function () { | ||
198 | + var obj = { | ||
199 | + teach_id: $('#teacher').val(), | ||
200 | + day: $('#time').val(), | ||
201 | + }; | ||
202 | + | ||
203 | + function find_seting(obj) { | ||
204 | + if (obj) { | ||
205 | + $.ajax({ | ||
206 | + url: "{:url('find_seting')}", | ||
207 | + data: { | ||
208 | + uid: obj.teach_id, | ||
209 | + day: obj.day.replace(/(\d{4})(\d{2})(\d{2})/, "$1-$2-$3") | ||
210 | + }, | ||
211 | + success: function (res) { | ||
212 | + console.log(res); | ||
213 | + if (res.code == '1') { | ||
214 | + var time_list = JSON.parse(res.data); | ||
215 | + for (var i = 0; i < time_list.length; i++) { | ||
216 | + if (time_list[i] == 'yes') { | ||
217 | + $('.time-box span')[i].setAttribute('class', 'acv'); | ||
218 | + } else { | ||
219 | + $('.time-box span')[i].setAttribute('class', ''); | ||
220 | + } | ||
221 | + } | ||
222 | + } | ||
223 | + } | ||
224 | + }); | ||
225 | + } else { | ||
226 | + var list = $('.time-box span'); | ||
227 | + for (var i = 0; i < list.length; i++) { | ||
228 | + list[i].setAttribute('class', ''); | ||
229 | + } | ||
230 | + } | ||
231 | + } | ||
232 | + | ||
233 | + find_seting(); | ||
234 | + $('#teacher').change(function () { | ||
235 | + obj.teach_id = $(this).val(); | ||
236 | + if (obj.day != -1) { | ||
237 | + find_seting(obj); | ||
238 | + } else { | ||
239 | + layer.msg('请选择时间'); | ||
240 | + } | ||
241 | + }); | ||
242 | + $('#time').change(function () { | ||
243 | + obj.day = $(this).val().split('-').join(''); | ||
244 | + if (obj.teach_id != -1) { | ||
245 | + find_seting(obj); | ||
246 | + } else { | ||
247 | + layer.msg('请选择教练'); | ||
248 | + } | ||
249 | + }); | ||
250 | + $('.time-box').on('click', '.acv', function () { | ||
251 | + for (var i = 0; i < $(".time-box .acv").length; i++) { | ||
252 | + $(".time-box .acv")[i].setAttribute("class", "acv"); | ||
253 | + } | ||
254 | + $(this).attr("class", "acv bg-colo"); | ||
255 | +// if ($(this).attr('class') == 'acv bg-colo') { | ||
256 | +// $(this).attr('class', 'acv'); | ||
257 | +// } else { | ||
258 | +// $(this).attr('class', 'acv bg-colo'); | ||
259 | +// } | ||
260 | + }); | ||
261 | + $('.save').click(function () { | ||
262 | + var list = $('.bg-colo'); | ||
263 | + var put_list = []; | ||
264 | + for (var i = 0; i < list.length; i++) { | ||
265 | + put_list.push(list[i]); | ||
266 | + } | ||
267 | + if (put_list.length != 1) { | ||
268 | + alert('时间段不能多选'); | ||
269 | + } else if (put_list.length == 0) { | ||
270 | + alert('请选择时间段'); | ||
271 | + } else { | ||
272 | + var teacher_id = $('#teacher').val(); | ||
273 | + var time_id = $('#time').val().split('-').join(''); | ||
274 | + $.ajax({ | ||
275 | + url: "{:url('seting_do')}", | ||
276 | + data: { | ||
277 | + teach_id: teacher_id, | ||
278 | + day: time_id.replace(/(\d{4})(\d{2})(\d{2})/, "$1-$2-$3"), | ||
279 | + begin: parseInt(put_list[0].innerHTML.split("-")[0]), | ||
280 | + end: parseInt(put_list[0].innerHTML.split("-")[1]) | ||
281 | + }, | ||
282 | + success: function (res) { | ||
283 | + console.log(res); | ||
284 | + if (res.code == "1") { | ||
285 | + layer.msg(res.msg); | ||
286 | + window.location.reload(); | ||
287 | + } | ||
288 | + } | ||
289 | + }); | ||
290 | + } | ||
291 | + }); | ||
292 | + setCookie("refersh_time", 0); | ||
293 | + Wind.use('ajaxForm', 'artDialog', 'iframeTools', function () { | ||
294 | + //批量复制 | ||
295 | + $('.js-articles-copy').click(function (e) { | ||
296 | + var ids = []; | ||
297 | + $("input[name='ids[]']").each(function () { | ||
298 | + if ($(this).is(':checked')) { | ||
299 | + ids.push($(this).val()); | ||
300 | + } | ||
301 | + }); | ||
302 | + | ||
303 | + if (ids.length == 0) { | ||
304 | + art.dialog.through({ | ||
305 | + id: 'error', | ||
306 | + icon: 'error', | ||
307 | + content: '您没有勾选信息,无法进行操作!', | ||
308 | + cancelVal: '关闭', | ||
309 | + cancel: true | ||
310 | + }); | ||
311 | + return false; | ||
312 | + } | ||
313 | + | ||
314 | + ids = ids.join(','); | ||
315 | + art.dialog.open("__ROOT__/index.php?g=portal&m=AdminArticle&a=copy&ids=" + ids, { | ||
316 | + title: "批量复制", | ||
317 | + width: "300px" | ||
318 | + }); | ||
319 | + }); | ||
320 | + $('.time-box span').click(function () { | ||
321 | + if ($(this).attr("class") == "") { | ||
322 | + var teacher_id = $('#teacher').val(); | ||
323 | + var time_id = $('#time').val().split('-').join(''); | ||
324 | + if (teacher_id == "") { | ||
325 | + layer.msg("请选择教练") | ||
326 | + } else if (time_id == 1) { | ||
327 | + layer.msg("请选择日期") | ||
328 | + } else { | ||
329 | + var _this = $(this); | ||
330 | + $.ajax({ | ||
331 | + url: "{:url('seting_do')}", | ||
332 | + data: { | ||
333 | + teach_id: teacher_id, | ||
334 | + day: time_id.replace(/(\d{4})(\d{2})(\d{2})/, "$1-$2-$3"), | ||
335 | + begin: parseInt($(this)[0].innerHTML.split("-")[0]), | ||
336 | + end: parseInt($(this)[0].innerHTML.split("-")[1]) | ||
337 | + }, | ||
338 | + success: function (res) { | ||
339 | + if (res.code == 1) { | ||
340 | + console.log($(this)); | ||
341 | + _this.attr("class", "acv"); | ||
342 | + layer.msg(res.msg); | ||
343 | + } | ||
344 | + } | ||
345 | + }); | ||
346 | + } | ||
347 | + } | ||
348 | + }); | ||
349 | + //批量移动 | ||
350 | + // $('.js-articles-move').click(function (e) { | ||
351 | + // var ids = []; | ||
352 | + // $("input[name='ids[]']").each(function () { | ||
353 | + // if ($(this).is(':checked')) { | ||
354 | + // ids.push($(this).val()); | ||
355 | + // } | ||
356 | + // }); | ||
357 | + // | ||
358 | + // if (ids.length == 0) { | ||
359 | + // art.dialog.through({ | ||
360 | + // id: 'error', | ||
361 | + // icon: 'error', | ||
362 | + // content: '您没有勾选信息,无法进行操作!', | ||
363 | + // cancelVal: '关闭', | ||
364 | + // cancel: true | ||
365 | + // }); | ||
366 | + // return false; | ||
367 | + // } | ||
368 | + // | ||
369 | + // ids = ids.join(','); | ||
370 | + // art.dialog.open("__ROOT__/index.php?g=portal&m=AdminArticle&a=move&old_term_id={$term.term_id|default=0}&ids=" + ids, { | ||
371 | + // title: "批量移动", | ||
372 | + // width: "300px" | ||
373 | + // }); | ||
374 | + // }); | ||
375 | + }); | ||
376 | + }); | ||
377 | +</script> | ||
378 | +<script src="http://www.jq22.com/jquery/1.11.1/jquery.min.js"></script> | ||
379 | +<script src="/static/src/zoomify/zoomify.js"></script> | ||
380 | +<script type="text/javascript"> | ||
381 | + // $('.example img').zoomify(); | ||
382 | +</script> | ||
383 | +</body> | ||
384 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +<style type="text/css"> | ||
3 | + .pagination{display:inline-block;padding-left:0;border-radius:4px;margin-left: 30%} | ||
4 | + .pagination li{display:inline} | ||
5 | + .pagination li a,.pagination li span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;color:#393D49;background:#fff;margin:0 0 0 8px;border:1px solid #eee} | ||
6 | + .pagination li a:hover{color:#fff;background:#1E9FFF} | ||
7 | + .pagination .active span{background:#1E9FFF;color:#fff} | ||
8 | +</style> | ||
9 | +</head> | ||
10 | +<body> | ||
11 | +<div class="wrap"> | ||
12 | + <ul class="nav nav-tabs"> | ||
13 | + <li class="active"><a href="{:url('index')}">列表管理</a></li> | ||
14 | + <!--<li><a href="{:url('add')}">添加</a></li>--> | ||
15 | + </ul> | ||
16 | + | ||
17 | + <form class="well form-inline margin-top-20" method="post" action="{:url('trainer')}"> | ||
18 | + | ||
19 | + | ||
20 | + | ||
21 | + | ||
22 | + 学员手机号: | ||
23 | + <input type="text" class="form-control" name="mobile" style="width: 200px;" | ||
24 | + value="{$keyword|default=''}" placeholder="请输入手机号..."> | ||
25 | + 学员姓名: | ||
26 | + <input type="text" class="form-control" name="name" style="width: 200px;" | ||
27 | + value="{$keyword|default=''}" placeholder="请输入姓名..."> | ||
28 | + | ||
29 | + <input type="submit" class="btn btn-primary" value="搜索"/> | ||
30 | + <a class="btn btn-danger" href="{:url('index')}">清空</a> | ||
31 | + </form> | ||
32 | + <table class="table table-hover table-bordered table-list"> | ||
33 | + <thead> | ||
34 | + <tr> | ||
35 | + <th width="50">ID</th> | ||
36 | + | ||
37 | + <th>预约ID</th> | ||
38 | + <th>学员名</th> | ||
39 | + <th>评论的教练</th> | ||
40 | + <th>留言内容</th> | ||
41 | + <th>修改时间</th> | ||
42 | + <th width="180">操作</th> | ||
43 | + | ||
44 | + </tr> | ||
45 | + </thead> | ||
46 | + <tbody> | ||
47 | + <foreach name="list" id="vo"> | ||
48 | + <tr> | ||
49 | + <td>{$vo.id}</td> | ||
50 | + <td>{$vo.yuyue_id}</td> | ||
51 | + <td>{$vo.uid|id_name}</td> | ||
52 | + <td>{$vo.teach_id|id_name}</td> | ||
53 | + <td>{$vo.comment}</td> | ||
54 | + <td>{$vo.create_time|date="Y-m-d H:i:s",###}</td> | ||
55 | + <td> | ||
56 | + <!--<a href='{:url("edit", ["id" => "$vo[id]"]) }' >编辑</a>--> | ||
57 | + <a class="js-ajax-delete" href='{:url("del_student", ["id" => "$vo[id]"]) }' >删除</a> | ||
58 | + </td> | ||
59 | + </tr> | ||
60 | + </foreach> | ||
61 | + </tbody> | ||
62 | + </table> | ||
63 | + | ||
64 | + | ||
65 | +</div> | ||
66 | +<div class="pagination"> | ||
67 | + {$page} | ||
68 | +</div> | ||
69 | +<script src="__STATIC__/js/admin.js"></script> | ||
70 | +</body> | ||
71 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | + <div class="wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a href="{:url('tag')}">列表管理</a></li> | ||
7 | + <li><a href="{:url('tag_add')}">添加</a></li> | ||
8 | + </ul> | ||
9 | + <form class="well form-inline margin-top-20" method="post" action="{:url('tag')}"> | ||
10 | + | ||
11 | + | ||
12 | + 类别: | ||
13 | + <select class="form-control" name="type" style="width: 140px;"> | ||
14 | + <option value=''>全部</option> | ||
15 | + <option value='1'>好评</option> | ||
16 | + <option value='2'>差评</option> | ||
17 | + | ||
18 | + </select> | ||
19 | + | ||
20 | + 关键字: | ||
21 | + <input type="text" class="form-control" name="keyword" style="width: 200px;" | ||
22 | + value="{$keyword|default=''}" placeholder="请输入关键字..."> | ||
23 | + <input type="submit" class="btn btn-primary" value="搜索"/> | ||
24 | + <a class="btn btn-danger" href="{:url('tag')}">清空</a> | ||
25 | + </form> | ||
26 | + <form method="post" class="js-ajax-form" action=""> | ||
27 | + | ||
28 | + <table class="table table-hover table-bordered table-list"> | ||
29 | + <thead> | ||
30 | + <tr> | ||
31 | + <th width="50">ID</th> | ||
32 | + <th>类别</th> | ||
33 | + <th>名称</th> | ||
34 | + | ||
35 | + <th>修改时间</th> | ||
36 | + <th width="180">操作</th> | ||
37 | + </tr> | ||
38 | + </thead> | ||
39 | + <tbody> | ||
40 | + <foreach name="list" id="vo"> | ||
41 | + <tr> | ||
42 | + <td>{$vo.id}</td> | ||
43 | + <td>{$vo.type|comment_type_name}</td> | ||
44 | + <td>{$vo.name}</td> | ||
45 | + <td>{$vo.create_time|date="Y-m-d H:i:s",###}</td> | ||
46 | + <td> | ||
47 | + <a href='{:url("tag_edit", ["id" => "$vo[id]"]) }' >编辑</a> | ||
48 | + <a class="js-ajax-delete" href='{:url("tag_delete", ["id" => "$vo[id]"]) }' >删除</a> | ||
49 | + </td> | ||
50 | + </tr> | ||
51 | + </foreach> | ||
52 | + </tbody> | ||
53 | + </table> | ||
54 | + </form> | ||
55 | + </div> | ||
56 | + <script src="__STATIC__/js/admin.js"></script> | ||
57 | +</body> | ||
58 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('tag')}">列表管理</a></li> | ||
7 | + <li class="active"><a href="{:url('tag_add')}">添加</a></li> | ||
8 | + </ul> | ||
9 | + <div class="row margin-top-20"> | ||
10 | + <div class="col-md-6"> | ||
11 | + <form class="js-ajax-form" action="{:url('tag_add_do')}" method="post"> | ||
12 | + <div class="tab-content"> | ||
13 | + <div class="tab-pane active" id="A"> | ||
14 | + <div class="form-group"> | ||
15 | + <label for="input-name"><span class="form-required">*</span>类型</label> | ||
16 | + <div> | ||
17 | + <select name="type" class="form-control"> | ||
18 | + <option value="1">好评</option> | ||
19 | + <option value="2">差评</option> | ||
20 | + </select> | ||
21 | + </div> | ||
22 | + </div> | ||
23 | + <div class="form-group"> | ||
24 | + <label for="input-name"><span class="form-required">*</span>名称</label> | ||
25 | + <div> | ||
26 | + <input type="text" class="form-control" id="input-name" name="name"> | ||
27 | + </div> | ||
28 | + </div> | ||
29 | + | ||
30 | + | ||
31 | + </div> | ||
32 | + | ||
33 | + </div> | ||
34 | + <div class="form-group"> | ||
35 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang('ADD')}</button> | ||
36 | + <a class="btn btn-default" href="{:url('tag')}">{:lang('BACK')}</a> | ||
37 | + </div> | ||
38 | + </form> | ||
39 | + </div> | ||
40 | + </div> | ||
41 | +</div> | ||
42 | +<script type="text/javascript" src="__STATIC__/js/admin.js"></script> | ||
43 | +</body> | ||
44 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('tag')}">列表管理</a></li> | ||
7 | + <li><a href="{:url('tag_add')}">添加</a></li> | ||
8 | + <li class="active"><a>编辑</a></li> | ||
9 | + </ul> | ||
10 | + <div class="row margin-top-20"> | ||
11 | + | ||
12 | + <div class="col-md-6"> | ||
13 | + <form class="js-ajax-form" action="{:url('tag_edit_do')}" method="post"> | ||
14 | + <div class="tab-content"> | ||
15 | + <div class="tab-pane active" id="A"> | ||
16 | + <div class="form-group"> | ||
17 | + <label for="input-name"><span class="form-required">*</span>类型</label> | ||
18 | + <div> | ||
19 | + <select name="type" class="form-control"> | ||
20 | + <option value="{$info.type}">{$info.type|comment_type_name}</option> | ||
21 | + <option value="1">好评</option> | ||
22 | + <option value="2">差评</option> | ||
23 | + </select> | ||
24 | + </div> | ||
25 | + </div> | ||
26 | + <div class="form-group"> | ||
27 | + <label for="input-name"><span class="form-required">*</span>名称</label> | ||
28 | + <div> | ||
29 | + <input type="text" class="form-control" id="input-name" name="name" value="{$info.name}"> | ||
30 | + </div> | ||
31 | + </div> | ||
32 | + | ||
33 | + </div> | ||
34 | + </div> | ||
35 | + <div class="form-group"> | ||
36 | + <input type="hidden" name="id" value="{$info.id}"> | ||
37 | + <button type="submit" class="btn btn-primary js-ajax-submit" data-refresh="0">{:lang('SAVE')} | ||
38 | + </button> | ||
39 | + <a class="btn btn-default" href="{:url('tag')}">{:lang('BACK')}</a> | ||
40 | + </div> | ||
41 | + </form> | ||
42 | + </div> | ||
43 | + </div> | ||
44 | +</div> | ||
45 | +<script type="text/javascript" src="__STATIC__/js/admin.js"></script> | ||
46 | +<script> | ||
47 | + $('#input-list_tpl').val("{$list_tpl|default=''}"); | ||
48 | + $('#input-one_tpl').val("{$one_tpl|default=''}"); | ||
49 | +</script> | ||
50 | +</body> | ||
51 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +<style type="text/css"> | ||
3 | + .pagination{display:inline-block;padding-left:0;border-radius:4px;margin-left: 30%} | ||
4 | + .pagination li{display:inline} | ||
5 | + .pagination li a,.pagination li span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;color:#393D49;background:#fff;margin:0 0 0 8px;border:1px solid #eee} | ||
6 | + .pagination li a:hover{color:#fff;background:#1E9FFF} | ||
7 | + .pagination .active span{background:#1E9FFF;color:#fff} | ||
8 | +</style> | ||
9 | +</head> | ||
10 | +<body> | ||
11 | + <div class="wrap"> | ||
12 | + <ul class="nav nav-tabs"> | ||
13 | + <li class="active"><a href="{:url('index')}">列表管理</a></li> | ||
14 | + <li><a href="{:url('add')}">添加</a></li> | ||
15 | + </ul> | ||
16 | + <form class="well form-inline margin-top-20" method="post" action="{:url('trainer')}"> | ||
17 | + | ||
18 | + | ||
19 | + | ||
20 | + | ||
21 | + 教练手机号: | ||
22 | + <input type="text" class="form-control" name="mobile" style="width: 200px;" | ||
23 | + value="{$keyword|default=''}" placeholder="请输入手机号..."> | ||
24 | + 教练姓名: | ||
25 | + <input type="text" class="form-control" name="name" style="width: 200px;" | ||
26 | + value="{$keyword|default=''}" placeholder="请输入姓名..."> | ||
27 | + | ||
28 | + <input type="submit" class="btn btn-primary" value="搜索"/> | ||
29 | + <a class="btn btn-danger" href="{:url('index')}">清空</a> | ||
30 | + </form> | ||
31 | + | ||
32 | + <table class="table table-hover table-bordered table-list"> | ||
33 | + <thead> | ||
34 | + <tr> | ||
35 | + <th width="50">ID</th> | ||
36 | + | ||
37 | + <th>预约ID</th> | ||
38 | + <th>教练名</th> | ||
39 | + <th>评论的学员</th> | ||
40 | + <th>类型</th> | ||
41 | + <th>留言内容</th> | ||
42 | + <th>修改时间</th> | ||
43 | + <th width="180">操作</th> | ||
44 | + | ||
45 | + </tr> | ||
46 | + </thead> | ||
47 | + <tbody> | ||
48 | + <foreach name="list" id="vo"> | ||
49 | + <tr> | ||
50 | + <td>{$vo.id}</td> | ||
51 | + <td>{$vo.yuyue_id}</td> | ||
52 | + <td>{$vo.teach_id|id_name}</td> | ||
53 | + <td>{$vo.uid|id_name}</td> | ||
54 | + <td>{$vo.type|comment_type}</td> | ||
55 | + <td>{$vo.comment}</td> | ||
56 | + <td>{$vo.create_time|date="Y-m-d H:i:s",###}</td> | ||
57 | + <td> | ||
58 | + <!--<a href='{:url("edit", ["id" => "$vo[id]"]) }' >编辑</a>--> | ||
59 | + <a class="js-ajax-delete" href='{:url("del_trainer", ["id" => "$vo[id]"]) }' >删除</a> | ||
60 | + </td> | ||
61 | + </tr> | ||
62 | + </foreach> | ||
63 | + </tbody> | ||
64 | + </table> | ||
65 | + | ||
66 | + | ||
67 | + </div> | ||
68 | + <div class="pagination"> | ||
69 | + {$page} | ||
70 | + </div> | ||
71 | + <script src="__STATIC__/js/admin.js"></script> | ||
72 | +</body> | ||
73 | +</html> |
1 | +<!DOCTYPE html> | ||
2 | +<html> | ||
3 | +<head> | ||
4 | + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> | ||
5 | + <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> | ||
6 | + <style type="text/css"> | ||
7 | + body, html, #allmap { | ||
8 | + width: 100%; | ||
9 | + height: 100%; | ||
10 | + overflow: hidden; | ||
11 | + margin: 0; | ||
12 | + } | ||
13 | + | ||
14 | + #suggestId { | ||
15 | + position: absolute; | ||
16 | + z-index: 9999; | ||
17 | + right: 20px; | ||
18 | + top: 20px; | ||
19 | + line-height: 32px; | ||
20 | + padding: 0px 10px; | ||
21 | + width: 300px; | ||
22 | + border: 1px solid #e4e6e7; | ||
23 | + | ||
24 | + } | ||
25 | + | ||
26 | + #suggestId:focus { | ||
27 | + outline: none; | ||
28 | + } | ||
29 | + </style> | ||
30 | + <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=KxkuAcGBup6sD1XxaDW85KBG"></script> | ||
31 | + <title>点击地图获取当前经纬度</title> | ||
32 | +</head> | ||
33 | +<body> | ||
34 | +<input id="lng_input" type="hidden" value="{$lng}"/> | ||
35 | +<input id="lat_input" type="hidden" value="{$lat}"/> | ||
36 | +<input id="address_input" type="hidden"/> | ||
37 | +<input id="city_input" type="hidden"/> | ||
38 | +<input id="province_input" type="hidden"/> | ||
39 | +<input id="district_input" type="hidden"/> | ||
40 | + | ||
41 | +<input id="suggestId" type="text" placeholder="请输入地址"/> | ||
42 | +<div id="allmap"></div> | ||
43 | +<script type="text/javascript"> | ||
44 | + | ||
45 | + // 百度地图API功能 | ||
46 | + var center = new BMap.Point({$lng}, {$lat}); | ||
47 | + | ||
48 | + var map = new BMap.Map("allmap"); | ||
49 | + map.centerAndZoom(new BMap.Point(116.404, 39.915), 8); | ||
50 | + map.enableScrollWheelZoom(); //启用滚轮放大缩小,默认禁用 | ||
51 | + map.enableContinuousZoom(); | ||
52 | + | ||
53 | + var map_ac = new BMap.Autocomplete( //建立一个自动完成的对象 | ||
54 | + { | ||
55 | + "input": "suggestId", | ||
56 | + "location": map | ||
57 | + }); | ||
58 | + | ||
59 | + var marker = new BMap.Marker(center); // 创建标注 | ||
60 | + map.addOverlay(marker); // 将标注添加到地图中 | ||
61 | + marker.enableDragging(); //可拖拽 | ||
62 | + //marker.setAnimation(BMAP_ANIMATION_BOUNCE); | ||
63 | + | ||
64 | + map_ac.addEventListener("onconfirm", function (e) { //鼠标点击下拉列表后的事件 | ||
65 | + var _value = e.item.value; | ||
66 | + | ||
67 | + function myFun() { | ||
68 | + var pp = local.getResults().getPoi(0).point; //获取第一个智能搜索的结果 | ||
69 | + map.centerAndZoom(pp, 8); | ||
70 | + marker.setPosition(pp); | ||
71 | + mgetLocation(pp); | ||
72 | + } | ||
73 | + | ||
74 | + myValue = _value.province + _value.city + _value.district + _value.street + _value.business; | ||
75 | + var local = new BMap.LocalSearch(map, { //智能搜索 | ||
76 | + onSearchComplete: myFun | ||
77 | + }); | ||
78 | + local.search(myValue); | ||
79 | + }); | ||
80 | + | ||
81 | + | ||
82 | + var opts = { | ||
83 | + width: 200, // 信息窗口宽度 | ||
84 | + height: 30, // 信息窗口高度 | ||
85 | + title: "", // 信息窗口标题 | ||
86 | + enableMessage: false,//设置允许信息窗发送短息 | ||
87 | + | ||
88 | + } | ||
89 | + var infoWindow = new BMap.InfoWindow("拖动我设置你的位置", opts); // 创建信息窗口对象 | ||
90 | + marker.openInfoWindow(infoWindow); | ||
91 | + | ||
92 | + var gc = new BMap.Geocoder(); | ||
93 | + | ||
94 | + function msetpoint(e) { | ||
95 | + document.getElementById("lng_input").value = e.point.lng; | ||
96 | + document.getElementById("lat_input").value = e.point.lat; | ||
97 | + marker.setPosition(new BMap.Point(e.point.lng, e.point.lat)); | ||
98 | + | ||
99 | + mgetLocation(e.point); | ||
100 | + } | ||
101 | + | ||
102 | + function mgetLocation(point) { | ||
103 | + document.getElementById("lng_input").value = point.lng; | ||
104 | + document.getElementById("lat_input").value = point.lat; | ||
105 | + gc.getLocation(point, function (rs) { | ||
106 | + var addComp = rs.addressComponents; | ||
107 | + marker.openInfoWindow(new BMap.InfoWindow(rs.address, opts)); | ||
108 | + document.getElementById("address_input").value = rs.address; | ||
109 | + document.getElementById("city_input").value = addComp.city; | ||
110 | + document.getElementById("province_input").value = addComp.province; | ||
111 | + document.getElementById("district_input").value = addComp.district; | ||
112 | + //alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber); | ||
113 | + }); | ||
114 | + } | ||
115 | + | ||
116 | + marker.addEventListener("dragend", msetpoint) | ||
117 | + | ||
118 | + map.addEventListener("click", msetpoint); | ||
119 | + | ||
120 | + | ||
121 | + function tilesloaded() { | ||
122 | + map.setCenter(center); //设置地图中心点。center除了可以为坐标点以外,还支持城市名 | ||
123 | + mgetLocation(center); | ||
124 | + // map.setZoom(8); //将视图切换到指定的缩放等级,中心点坐标不变 | ||
125 | + map.removeEventListener("tilesloaded", tilesloaded); | ||
126 | + } | ||
127 | + | ||
128 | + map.addEventListener("tilesloaded", tilesloaded); | ||
129 | + | ||
130 | + | ||
131 | + function confirm() { | ||
132 | + var data = {}; | ||
133 | + data.lng = document.getElementById("lng_input").value; | ||
134 | + data.lat = document.getElementById("lat_input").value; | ||
135 | + data.address = document.getElementById("address_input").value; | ||
136 | + data.city = document.getElementById("city_input").value; | ||
137 | + data.province = document.getElementById("province_input").value; | ||
138 | + data.district = document.getElementById("district_input").value; | ||
139 | + | ||
140 | + return data; | ||
141 | + } | ||
142 | +</script> | ||
143 | + | ||
144 | +</body> | ||
145 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a href="{:url('data_list')}">列表管理</a></li> | ||
7 | + <!--<li><a href="{:url('data_edit')}">添加 / 编辑</a></li>--> | ||
8 | + </ul> | ||
9 | + <form action="{:url('data_edit')}" method="post" class="form-horizontal js-ajax-form margin-top-20"> | ||
10 | + <div class="row"> | ||
11 | + <div class="col-md-9"> | ||
12 | + <table class="table table-bordered"> | ||
13 | + | ||
14 | + <tr> | ||
15 | + <th>驾考类型<span class="form-required">*</span></th> | ||
16 | + <td> | ||
17 | + <input type="hidden" name="id" value="{$info.id|default=''}"> | ||
18 | + <input class="form-control" type="text" name="name" id="post_title" value="{$info.name|default=''}" | ||
19 | + placeholder="请输入标题"> | ||
20 | + </td> | ||
21 | + </tr> | ||
22 | + <tr> | ||
23 | + <th>简介</th> | ||
24 | + <td> | ||
25 | + <textarea class="form-control" name="des" style="height: 50px;" | ||
26 | + placeholder="请填写简介">{$info.des|default=''}</textarea> | ||
27 | + </td> | ||
28 | + </tr> | ||
29 | + <tr> | ||
30 | + <th>价格</th> | ||
31 | + <td> | ||
32 | + <textarea class="form-control" name="price" style="height: 50px;" | ||
33 | + placeholder="请填写价格">{$info.price|default=''}</textarea> | ||
34 | + </td> | ||
35 | + </tr> | ||
36 | + <!--<tr>--> | ||
37 | + <!--<th>图片</th>--> | ||
38 | + <!--<td>--> | ||
39 | + <!--<div class="col-md-6 col-sm-10">--> | ||
40 | + <!--<a href="javascript:uploadOneImage('图片上传','#photo-1');">点击上传图片</a>--> | ||
41 | + <!--<br>--> | ||
42 | + <!--<input id="photo-1" type="hidden" name="pic" >--> | ||
43 | + <!--<input id="photo-1-name" type="hidden" name="pic" title="图片名称">--> | ||
44 | + <!--<img id="photo-1-preview" width="200px">--> | ||
45 | + | ||
46 | + <!--</div>--> | ||
47 | + <!--</td>--> | ||
48 | + <!--</tr>--> | ||
49 | + <tr> | ||
50 | + <th>驾考合同</th> | ||
51 | + <td> | ||
52 | + <script type="text/plain" id="content" name="hetong">{$info.hetong|default=''|htmlspecialchars_decode}</script> | ||
53 | + </td> | ||
54 | + </tr> | ||
55 | + </table> | ||
56 | + <div class="form-group"> | ||
57 | + <div class="col-sm-offset-2 col-sm-10"> | ||
58 | + <button type="submit" class="btn btn-primary js-ajax-submit">提交</button> | ||
59 | + <a class="btn btn-default" href="{:url('data_list')}">返回</a> | ||
60 | + </div> | ||
61 | + </div> | ||
62 | + </div> | ||
63 | + </div> | ||
64 | + </form> | ||
65 | +</div> | ||
66 | +<script type="text/javascript" src="__STATIC__/js/admin.js"></script> | ||
67 | +<script type="text/javascript"> | ||
68 | + //编辑器路径定义 | ||
69 | + var editorURL = GV.WEB_ROOT; | ||
70 | +</script> | ||
71 | +<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.config.js"></script> | ||
72 | +<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.all.min.js"></script> | ||
73 | +<script type="text/javascript"> | ||
74 | + $(function () { | ||
75 | + | ||
76 | + editorcontent = new baidu.editor.ui.Editor(); | ||
77 | + editorcontent.render('content'); | ||
78 | + try { | ||
79 | + editorcontent.sync(); | ||
80 | + } catch (err) { | ||
81 | + } | ||
82 | + | ||
83 | + $('.btn-cancel-thumbnail').click(function () { | ||
84 | + $('#thumbnail-preview').attr('src', '__TMPL__/public/assets/images/default-thumbnail.png'); | ||
85 | + $('#thumbnail').val(''); | ||
86 | + }); | ||
87 | + | ||
88 | + }); | ||
89 | + | ||
90 | + function doSelectCategory() { | ||
91 | + var selectedCategoriesId = $('#js-categories-id-input').val(); | ||
92 | + openIframeLayer("{:url('AdminCategory/select')}?ids=" + selectedCategoriesId, '请选择分类', { | ||
93 | + area: ['700px', '400px'], | ||
94 | + btn: ['确定', '取消'], | ||
95 | + yes: function (index, layero) { | ||
96 | + //do something | ||
97 | + | ||
98 | + var iframeWin = window[layero.find('iframe')[0]['name']]; | ||
99 | + var selectedCategories = iframeWin.confirm(); | ||
100 | + if (selectedCategories.selectedCategoriesId.length == 0) { | ||
101 | + layer.msg('请选择分类'); | ||
102 | + return; | ||
103 | + } | ||
104 | + $('#js-categories-id-input').val(selectedCategories.selectedCategoriesId.join(',')); | ||
105 | + $('#js-categories-name-input').val(selectedCategories.selectedCategoriesName.join(' ')); | ||
106 | + //console.log(layer.getFrameIndex(index)); | ||
107 | + layer.close(index); //如果设定了yes回调,需进行手工关闭 | ||
108 | + } | ||
109 | + }); | ||
110 | + } | ||
111 | +</script> | ||
112 | +<script> | ||
113 | + $('#input-list_tpl').val("{$list_tpl|default=''}"); | ||
114 | + $('#input-one_tpl').val("{$one_tpl|default=''}"); | ||
115 | +</script> | ||
116 | +</body> | ||
117 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | + <div class="wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a href="{:url('data_list')}">列表管理</a></li> | ||
7 | + <li><a href="{:url('')}">添加 </a></li> | ||
8 | + </ul> | ||
9 | + <form method="post" class="js-ajax-form" action=""> | ||
10 | + | ||
11 | + <table class="table table-hover table-bordered table-list"> | ||
12 | + <thead> | ||
13 | + <tr> | ||
14 | + <th width="50">ID</th> | ||
15 | + <th>名称</th> | ||
16 | + <th>价格</th> | ||
17 | + <th>简介</th> | ||
18 | + | ||
19 | + <th>修改时间</th> | ||
20 | + <th width="180">操作</th> | ||
21 | + </tr> | ||
22 | + </thead> | ||
23 | + <tbody> | ||
24 | + <foreach name="list" id="vo"> | ||
25 | + <tr> | ||
26 | + <td>{$vo.id}</td> | ||
27 | + <td>{$vo.name}</td> | ||
28 | + <td>{$vo.price}</td> | ||
29 | + <td>{$vo.des}</td> | ||
30 | + <td>{$vo.create_time|date="Y-m-d H:i:s",###}</td> | ||
31 | + <td> | ||
32 | + <a href='{:url("data_edit", ["id" => "$vo[id]"]) }' >查看 / 编辑</a> | ||
33 | + <if condition="$vo['status'] eq 1"> | ||
34 | + <a href="{:url('data_status',array('id'=>$vo['id'],'type'=>'ban'))}" class="js-ajax-dialog-btn" data-msg="是否要隐藏">隐藏</a> | ||
35 | + <else /> | ||
36 | + <a href="{:url('data_status',array('id'=>$vo['id'],'type'=>'cancelban'))}" class="js-ajax-dialog-btn" data-msg="是否要显示">显示</a> | ||
37 | + </if> | ||
38 | + <a href='{:url("data_status", ["id" => "$vo[id]","type"=>"del"]) }' class="js-ajax-dialog-btn" data-msg="是否要删除">删除</a> | ||
39 | + </td> | ||
40 | + </tr> | ||
41 | + </foreach> | ||
42 | + </tbody> | ||
43 | + </table> | ||
44 | + </form> | ||
45 | + </div> | ||
46 | + <script src="__STATIC__/js/admin.js"></script> | ||
47 | +</body> | ||
48 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a>所有钩子</a></li> | ||
7 | + <li><a href="{:url('Hook/sync')}">同步钩子</a></li> | ||
8 | + </ul> | ||
9 | + <form action="" method="post" class="margin-top-20"> | ||
10 | + <php> | ||
11 | + $types = ["1"=>'系统钩子','2'=>'应用钩子','3'=>'模板钩子','4'=>'后台模板钩子']; | ||
12 | + </php> | ||
13 | + <table class="table table-hover table-bordered"> | ||
14 | + <thead> | ||
15 | + <tr> | ||
16 | + <th width="40">ID</th> | ||
17 | + <th>名称</th> | ||
18 | + <th>类型</th> | ||
19 | + <th>描述</th> | ||
20 | + <th width="150">{:lang('ACTIONS')}</th> | ||
21 | + </tr> | ||
22 | + </thead> | ||
23 | + <tbody> | ||
24 | + <foreach name="hooks" item="vo"> | ||
25 | + <tr> | ||
26 | + <td>{$vo.id}</td> | ||
27 | + <td>{$vo.name}:{$vo.hook}</td> | ||
28 | + <td>{$types[$vo.type]}</td> | ||
29 | + <td>{$vo.description}</td> | ||
30 | + <td> | ||
31 | + <a href="javascript:parent.openIframeLayer('{:url('Hook/plugins',['hook'=>$vo['hook']])}','钩子{$vo.name}插件管理',{});">管理插件</a> | ||
32 | + </td> | ||
33 | + </tr> | ||
34 | + </foreach> | ||
35 | + </tbody> | ||
36 | + </table> | ||
37 | + </form> | ||
38 | +</div> | ||
39 | +<script src="__STATIC__/js/admin.js"></script> | ||
40 | +</body> | ||
41 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <form action="{:url('hook/pluginListOrder')}" method="post" class="js-ajax-form"> | ||
6 | + <php> | ||
7 | + $types = ["1"=>'系统钩子','2'=>'应用钩子','3'=>'模板钩子','4'=>'后台模板钩子']; | ||
8 | + $status=array("1"=>'开启',"0"=>'禁用',"3"=>'未安装'); | ||
9 | + </php> | ||
10 | + <div class="table-actions"> | ||
11 | + <button type="submit" class="btn btn-primary btn-sm js-ajax-submit">{:lang('SORT')}</button> | ||
12 | + </div> | ||
13 | + <table class="table table-hover table-bordered"> | ||
14 | + <thead> | ||
15 | + <tr> | ||
16 | + <th width="50">排序</th> | ||
17 | + <th>插件名称</th> | ||
18 | + <th>插件标识</th> | ||
19 | + <th>钩子</th> | ||
20 | + <th>描述</th> | ||
21 | + <th>作者</th> | ||
22 | + <th width="60">状态</th> | ||
23 | + <th width="150">{:lang('ACTIONS')}</th> | ||
24 | + </tr> | ||
25 | + </thead> | ||
26 | + <tbody> | ||
27 | + <foreach name="plugins" item="vo"> | ||
28 | + <tr> | ||
29 | + <td><input name="list_orders[{$vo.hook_plugin_id}]" type="text" size="3" value="{$vo.list_order}" | ||
30 | + class="input input-order"></td> | ||
31 | + <td>{$vo.title}</td> | ||
32 | + <td>{$vo.name}</td> | ||
33 | + <td>{$vo.hooks|default=''}</td> | ||
34 | + <td>{$vo.description}</td> | ||
35 | + <td>{$vo.author}</td> | ||
36 | + <td>{$status[$vo['hook_plugin_status']]}</td> | ||
37 | + <td> | ||
38 | + <if condition="$vo['status']==3"> | ||
39 | + <a href="{:url('plugin/install',array('name'=>$vo['name']))}" class="js-ajax-dialog-btn" | ||
40 | + data-msg="确定安装该插件吗?">安装</a> | ||
41 | + <else/> | ||
42 | + <php>$config=json_decode($vo['config'],true);</php> | ||
43 | + <if condition="!empty($config)"> | ||
44 | + <a href="{:url('plugin/setting',array('id'=>$vo['id']))}">设置</a> | | ||
45 | + <else/> | ||
46 | + <a href="javascript:;" style="color: #ccc;">设置</a> | | ||
47 | + </if> | ||
48 | + | ||
49 | + <if condition="!empty($vo['has_admin'])"> | ||
50 | + <a href="javascript:parent.openapp('{:cmf_plugin_url($vo['name'].'://AdminIndex/index')}','plugin_{$vo.name}','{$vo.title}')">管理</a>| | ||
51 | + <else/> | ||
52 | + <a href="javascript:;" style="color: #ccc;">管理</a> | ||
53 | + </if> | ||
54 | + | ||
55 | + </if> | ||
56 | + </td> | ||
57 | + </tr> | ||
58 | + </foreach> | ||
59 | + </tbody> | ||
60 | + </table> | ||
61 | + </form> | ||
62 | +</div> | ||
63 | +<script src="__STATIC__/js/admin.js"></script> | ||
64 | +</body> | ||
65 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap"> | ||
5 | + <div class="row"> | ||
6 | + <div class="col-md-offset-3 col-md-6"> | ||
7 | + <div class="panel panel-default" style="margin-top: 10%"> | ||
8 | + <div class="panel-heading"> | ||
9 | + <h3 class="panel-title">同步钩子</h3> | ||
10 | + </div> | ||
11 | + <div class="panel-body"> | ||
12 | + <div style="line-height: 60px;"> | ||
13 | + 钩子同步成功! | ||
14 | + </div> | ||
15 | + <div> | ||
16 | + <a href="javascript:history.back(-1);" class="btn btn-primary pull-right">{:lang('CLOSE')}</a> | ||
17 | + <div class="clearfix"></div> | ||
18 | + </div> | ||
19 | + </div> | ||
20 | + </div> | ||
21 | + </div> | ||
22 | + </div> | ||
23 | +</div> | ||
24 | +<script src="__STATIC__/js/admin.js"></script> | ||
25 | +<script> | ||
26 | + var closeTimeout = setTimeout(function () { | ||
27 | + history.back(-1); | ||
28 | + }, 3000); | ||
29 | + | ||
30 | +</script> | ||
31 | +</body> | ||
32 | +</html> |
1 | +<!DOCTYPE html> | ||
2 | +<html lang="zh_CN" style="overflow: hidden;"> | ||
3 | +<head> | ||
4 | + <meta http-equiv="X-UA-Compatible" content="IE=edge"/> | ||
5 | + <!-- Set render engine for 360 browser --> | ||
6 | + <meta name="renderer" content="webkit"> | ||
7 | + <meta charset="utf-8"> | ||
8 | + <title>QnbugBMS {:lang('ADMIN_CENTER')}</title> | ||
9 | + <meta name="description" content="This is page-header (.page-header > h1)"> | ||
10 | + <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
11 | + <!-- HTML5 shim for IE8 support of HTML5 elements --> | ||
12 | + <!--[if lt IE 9]> | ||
13 | + <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> | ||
14 | + <![endif]--> | ||
15 | + <link href="__TMPL__/public/assets/themes/{:cmf_get_admin_style()}/bootstrap.min.css" rel="stylesheet"> | ||
16 | + <link href="__TMPL__/public/assets/simpleboot3/css/simplebootadmin.css" rel="stylesheet"> | ||
17 | + <link href="__STATIC__/font-awesome/css/font-awesome.min.css?page=index" rel="stylesheet" type="text/css"> | ||
18 | + <link rel="stylesheet" href="__TMPL__/public/assets/themes/{:cmf_get_admin_style()}/simplebootadminindex.min.css"> | ||
19 | + <!--[if lt IE 9]> | ||
20 | + <script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script> | ||
21 | + <![endif]--> | ||
22 | + <style> | ||
23 | + /*-----------------导航hack--------------------*/ | ||
24 | + .nav-list > li.open { | ||
25 | + position: relative; | ||
26 | + } | ||
27 | + | ||
28 | + .nav-list > li.open .back { | ||
29 | + display: none; | ||
30 | + } | ||
31 | + | ||
32 | + .nav-list > li.open .normal { | ||
33 | + display: inline-block !important; | ||
34 | + } | ||
35 | + | ||
36 | + .nav-list > li.open a { | ||
37 | + padding-left: 7px; | ||
38 | + } | ||
39 | + | ||
40 | + .nav-list > li .submenu > li > a { | ||
41 | + background: #fff; | ||
42 | + } | ||
43 | + | ||
44 | + .nav-list > li .submenu > li a > [class*="fa-"]:first-child { | ||
45 | + left: 20px; | ||
46 | + } | ||
47 | + | ||
48 | + .nav-list > li ul.submenu ul.submenu > li a > [class*="fa-"]:first-child { | ||
49 | + left: 30px; | ||
50 | + } | ||
51 | + /*----------------导航hack--------------------*/ | ||
52 | + </style> | ||
53 | + | ||
54 | + <script> | ||
55 | + //全局变量 | ||
56 | + var GV = { | ||
57 | + HOST: "{$_SERVER['HTTP_HOST']}", | ||
58 | + ROOT: "__ROOT__/", | ||
59 | + WEB_ROOT: "__WEB_ROOT__/", | ||
60 | + JS_ROOT: "static/js/" | ||
61 | + }; | ||
62 | + </script> | ||
63 | + <php>$submenus=$menus;</php> | ||
64 | + | ||
65 | + <php>function getsubmenu($submenus){</php> | ||
66 | + <notempty name="submenus"> | ||
67 | + <php>foreach($submenus as $menu){</php> | ||
68 | + <li> | ||
69 | + <php> | ||
70 | + $menu_name=lang($menu['lang']); | ||
71 | + $menu_name=$menu['lang']==$menu_name?$menu['name']:$menu_name; | ||
72 | + </php> | ||
73 | + <php>if(empty($menu['items'])){</php> | ||
74 | + <a href="javascript:openapp('{$menu.url}','{$menu.id}','{$menu_name}',true);"> | ||
75 | + <i class="fa fa-{$menu.icon|default='desktop'}"></i> | ||
76 | + <span class="menu-text"> {$menu_name} </span> | ||
77 | + </a> | ||
78 | + <php>}else{</php> | ||
79 | + <a href="#" class="dropdown-toggle"> | ||
80 | + <i class="fa fa-{$menu.icon|default='desktop'} normal"></i> | ||
81 | + <span class="menu-text normal"> {$menu_name} </span> | ||
82 | + <b class="arrow fa fa-angle-right normal"></b> | ||
83 | + <i class="fa fa-reply back"></i> | ||
84 | + <span class="menu-text back">返回</span> | ||
85 | + | ||
86 | + </a> | ||
87 | + | ||
88 | + <ul class="submenu"> | ||
89 | + <php>getsubmenu1($menu['items'])</php> | ||
90 | + </ul> | ||
91 | + <php>}</php> | ||
92 | + | ||
93 | + </li> | ||
94 | + | ||
95 | + <php>}</php> | ||
96 | + </notempty> | ||
97 | + <php>}</php> | ||
98 | + | ||
99 | + <php>function getsubmenu1($submenus){</php> | ||
100 | + <php>foreach($submenus as $menu){</php> | ||
101 | + <li> | ||
102 | + <php> | ||
103 | + $menu_name=lang($menu['lang']); | ||
104 | + $menu_name=$menu['lang']==$menu_name?$menu['name']:$menu_name; | ||
105 | + </php> | ||
106 | + <php>if(empty($menu['items'])){</php> | ||
107 | + <a href="javascript:openapp('{$menu.url}','{$menu.id}','{$menu_name}',true);"> | ||
108 | + <i class="fa fa-caret-right"></i> | ||
109 | + <span class="menu-text"> | ||
110 | + {$menu_name} | ||
111 | + </span> | ||
112 | + </a> | ||
113 | + <php>}else{</php> | ||
114 | + <a href="#" class="dropdown-toggle"> | ||
115 | + <i class="fa fa-caret-right"></i> | ||
116 | + <span class="menu-text"> | ||
117 | + {$menu_name} | ||
118 | + </span> | ||
119 | + <b class="arrow fa fa-angle-right"></b> | ||
120 | + </a> | ||
121 | + <ul class="submenu"> | ||
122 | + <php>getsubmenu2($menu['items'])</php> | ||
123 | + </ul> | ||
124 | + <php>}</php> | ||
125 | + | ||
126 | + </li> | ||
127 | + | ||
128 | + <php>}</php> | ||
129 | + <php>}</php> | ||
130 | + | ||
131 | + <php>function getsubmenu2($submenus){</php> | ||
132 | + <php>foreach($submenus as $menu){</php> | ||
133 | + <li> | ||
134 | + <php> | ||
135 | + $menu_name=lang($menu['lang']); | ||
136 | + $menu_name=$menu['lang']==$menu_name?$menu['name']:$menu_name; | ||
137 | + </php> | ||
138 | + | ||
139 | + <a href="javascript:openapp('{$menu.url}','{$menu.id}','{$menu_name}',true);"> | ||
140 | + <i class="fa fa-angle-double-right"></i> | ||
141 | + <span class="menu-text"> | ||
142 | + {$menu_name} | ||
143 | + </span> | ||
144 | + </a> | ||
145 | + </li> | ||
146 | + | ||
147 | + <php>}</php> | ||
148 | + <php>}</php> | ||
149 | + | ||
150 | + | ||
151 | + <if condition="APP_DEBUG"> | ||
152 | + <style> | ||
153 | + #think_page_trace_open { | ||
154 | + left: 0 !important; | ||
155 | + right: initial !important; | ||
156 | + } | ||
157 | + </style> | ||
158 | + </if> | ||
159 | + | ||
160 | +</head> | ||
161 | + | ||
162 | +<body style="min-width:900px;overflow: hidden;"> | ||
163 | +<div id="loading"><i class="loadingicon"></i><span>{:lang('LOADING')}</span></div> | ||
164 | +<div id="right-tools-wrapper"> | ||
165 | + <!--<span id="right_tools_clearcache" title="清除缓存" onclick="javascript:openapp('{:url('admin/Setting/clearcache')}','right_tool_clearcache','清除缓存');"><i class="fa fa-trash-o right_tool_icon"></i></span>--> | ||
166 | + <!--<span id="refresh-wrapper" title="{:lang('REFRESH_CURRENT_PAGE')}"><i--> | ||
167 | + <!--class="fa fa-refresh right_tool_icon"></i></span>--> | ||
168 | +</div> | ||
169 | +<div class="navbar navbar-default"> | ||
170 | + <div class="container-fluid"> | ||
171 | + <div class="navbar-header"> | ||
172 | + <a href="{:url('admin/index/index')}" class="navbar-brand" style="min-width: 200px;text-align: center;">QnbugBMS</a> | ||
173 | + <button class="navbar-toggle" type="button" data-toggle="collapse" data-target="#navbar-main"> | ||
174 | + <span class="icon-bar"></span> | ||
175 | + <span class="icon-bar"></span> | ||
176 | + <span class="icon-bar"></span> | ||
177 | + </button> | ||
178 | + </div> | ||
179 | + | ||
180 | + <div class="navbar-collapse collapse" id="navbar-main"> | ||
181 | + <div class="pull-left" style="position: relative;"> | ||
182 | + <a id="task-pre" class="task-changebt"><i class="fa fa-chevron-left"></i></a> | ||
183 | + <div id="task-content"> | ||
184 | + <ul class="nav navbar-nav cmf-component-tab" id="task-content-inner"> | ||
185 | + <li class="cmf-component-tabitem noclose" app-id="0" app-url="{:url('main/index')}" | ||
186 | + app-name="首页"> | ||
187 | + <a class="cmf-tabs-item-text">{:lang('HOME')}</a> | ||
188 | + </li> | ||
189 | + </ul> | ||
190 | + <div style="clear:both;"></div> | ||
191 | + </div> | ||
192 | + <a id="task-next" class="task-changebt"><i class="fa fa-chevron-right"></i></a> | ||
193 | + </div> | ||
194 | + | ||
195 | + <ul class="nav navbar-nav navbar-right simplewind-nav"> | ||
196 | + <li class="light-blue" style="border-left:none;display: none;" id="close-all-tabs-btn"> | ||
197 | + <a id="close-wrapper" href="javascript:void(0);" title="{:lang('CLOSE_TOP_MENU')}" style="color:#fff;font-size: 16px"> | ||
198 | + <i class="fa fa-times right_tool_icon"></i> | ||
199 | + </a> | ||
200 | + </li> | ||
201 | + <li class="light-blue" style="border-left:none;"> | ||
202 | + <a id="refresh-wrapper" href="javacript:void(0);" title="{:lang('REFRESH_CURRENT_PAGE')}" style="color:#fff;font-size: 16px"> | ||
203 | + <i class="fa fa-refresh right_tool_icon"></i> | ||
204 | + </a> | ||
205 | + </li> | ||
206 | + <li class="light-blue dropdown" style="border-left:none;"> | ||
207 | + <a data-toggle="dropdown" href="#" class="dropdown-toggle"> | ||
208 | + <if condition="isset($admin['avatar']) && $admin['avatar']"> | ||
209 | + <img class="nav-user-photo" width="30" height="30" | ||
210 | + src="{:cmf_get_user_avatar_url($admin['avatar'])}" alt="{$admin.user_login}"> | ||
211 | + <else/> | ||
212 | + <img class="nav-user-photo" width="30" height="30" | ||
213 | + src="__TMPL__/public/assets/images/logo-18.png" alt="{$admin.user_login|default=''}"> | ||
214 | + </if> | ||
215 | + <span class="user-info"> | ||
216 | + {:lang('WELCOME_USER',array('user_nickname' => empty($admin['user_nickname'] )? $admin['user_login'] : $admin['user_nickname']))} | ||
217 | + </span> | ||
218 | + <i class="fa fa-caret-down"></i> | ||
219 | + </a> | ||
220 | + <ul class="user-menu pull-right dropdown-menu dropdown-yellow dropdown-caret dropdown-closer"> | ||
221 | + <if condition="cmf_auth_check(cmf_get_current_admin_id(),'admin/Setting/site')"> | ||
222 | + <li> | ||
223 | + <a href="javascript:openapp('{:url('setting/site')}','index_site','{:lang('ADMIN_SETTING_SITE')}');"><i | ||
224 | + class="fa fa-cog"></i> {:lang('ADMIN_SETTING_SITE')}</a></li> | ||
225 | + </if> | ||
226 | + <if condition="cmf_auth_check(cmf_get_current_admin_id(),'admin/user/userinfo')"> | ||
227 | + <li> | ||
228 | + <a href="javascript:openapp('{:url('user/userinfo')}','index_userinfo','{:lang('ADMIN_USER_USERINFO')}');"><i | ||
229 | + class="fa fa-user"></i> {:lang('ADMIN_USER_USERINFO')}</a></li> | ||
230 | + </if> | ||
231 | + <if condition="cmf_auth_check(cmf_get_current_admin_id(),'admin/Setting/password')"> | ||
232 | + <li> | ||
233 | + <a href="javascript:openapp('{:url('setting/password')}','index_password','{:lang('ADMIN_SETTING_PASSWORD')}');"><i | ||
234 | + class="fa fa-lock"></i> {:lang('ADMIN_SETTING_PASSWORD')}</a></li> | ||
235 | + </if> | ||
236 | + <li><a href="{:url('Public/logout')}"><i class="fa fa-sign-out"></i> {:lang('LOGOUT')}</a></li> | ||
237 | + </ul> | ||
238 | + </li> | ||
239 | + </ul> | ||
240 | + </div> | ||
241 | + </div> | ||
242 | +</div> | ||
243 | + | ||
244 | +<div class="main-container container-fluid"> | ||
245 | + | ||
246 | + <div class="sidebar" id="sidebar"> | ||
247 | + <div class="sidebar-shortcuts" id="sidebar-shortcuts"> | ||
248 | + | ||
249 | + | ||
250 | + <if condition="cmf_auth_check(cmf_get_current_admin_id(),'admin/Setting/clearcache')"> | ||
251 | + <a class="btn btn-sm btn-danger" | ||
252 | + href="javascript:openapp('{:url('admin/Setting/clearcache')}','index_clearcache','{:lang('ADMIN_SETTING_CLEARCACHE')}',true);" | ||
253 | + title="{:lang('ADMIN_SETTING_CLEARCACHE')}" | ||
254 | + data-toggle="tooltip"> | ||
255 | + <i class="fa fa-trash-o"></i> | ||
256 | + </a> | ||
257 | + </if> | ||
258 | + | ||
259 | + | ||
260 | + | ||
261 | + <if condition="APP_DEBUG"> | ||
262 | + <a class="btn btn-sm btn-default" | ||
263 | + href="javascript:openapp('{:url('admin/Menu/index')}','index_menu','{:lang('ADMIN_MENU_INDEX')}',true);" | ||
264 | + title="{:lang('ADMIN_MENU_INDEX')}" | ||
265 | + data-toggle="tooltip"> | ||
266 | + <i class="fa fa-list"></i> | ||
267 | + </a> | ||
268 | + </if> | ||
269 | + | ||
270 | + </div> | ||
271 | + <div id="nav-wrapper"> | ||
272 | + <ul class="nav nav-list"> | ||
273 | + {:getsubmenu($submenus)} | ||
274 | + </ul> | ||
275 | + </div> | ||
276 | + | ||
277 | + </div> | ||
278 | + | ||
279 | + <div class="main-content"> | ||
280 | + <div class="page-content" id="content"> | ||
281 | + <iframe src="{:url('Main/index')}" style="width:100%;height: 100%;" frameborder="0" id="appiframe-0" | ||
282 | + class="appiframe"></iframe> | ||
283 | + </div> | ||
284 | + </div> | ||
285 | +</div> | ||
286 | + | ||
287 | +<script src="__TMPL__/public/assets/js/jquery-1.10.2.min.js"></script> | ||
288 | +<script src="__STATIC__/js/wind.js"></script> | ||
289 | +<script src="__TMPL__/public/assets/js/bootstrap.min.js"></script> | ||
290 | +<script src="__STATIC__/js/admin.js"></script> | ||
291 | +<script src="__TMPL__/public/assets/simpleboot3/js/adminindex.js"></script> | ||
292 | +<script> | ||
293 | + $(function () { | ||
294 | + $("[data-toggle='tooltip']").tooltip(); | ||
295 | + $("li.dropdown").hover(function () { | ||
296 | + $(this).addClass("open"); | ||
297 | + }, function () { | ||
298 | + $(this).removeClass("open"); | ||
299 | + }); | ||
300 | + | ||
301 | + var menus= {:$menus_js_var}; | ||
302 | + //读取url参数。尝试执行菜单功能。 | ||
303 | + if(typeof(menus) != "undefined"){ | ||
304 | + | ||
305 | + var tw = window.top; | ||
306 | + var twa =tw.location.href.split("#"); | ||
307 | + var url = twa[1]; | ||
308 | + var urlTmp = url; | ||
309 | + if (url !=null ){ | ||
310 | + //去掉/ 去掉_ 全部小写。 | ||
311 | + urlTmp = urlTmp.replace(/[\\/|_|]/g,""); | ||
312 | + urlTmp = urlTmp.replace(".html",""); | ||
313 | + var menu = menus[urlTmp]; | ||
314 | + if (menu){ | ||
315 | + openapp(url,menu.id+menu.app,menu.name,true); | ||
316 | + } | ||
317 | + } | ||
318 | + } | ||
319 | + | ||
320 | + | ||
321 | + | ||
322 | + | ||
323 | + }); | ||
324 | + | ||
325 | + var ismenumin = $("#sidebar").hasClass("menu-min"); | ||
326 | + $(".nav-list").on("click", function (event) { | ||
327 | + var closest_a = $(event.target).closest("a"); | ||
328 | + if (!closest_a || closest_a.length == 0) { | ||
329 | + return | ||
330 | + } | ||
331 | + if (!closest_a.hasClass("dropdown-toggle")) { | ||
332 | + if (ismenumin && "click" == "tap" && closest_a.get(0).parentNode.parentNode == this) { | ||
333 | + var closest_a_menu_text = closest_a.find(".menu-text").get(0); | ||
334 | + if (event.target != closest_a_menu_text && !$.contains(closest_a_menu_text, event.target)) { | ||
335 | + return false | ||
336 | + } | ||
337 | + } | ||
338 | + return | ||
339 | + } | ||
340 | + var closest_a_next = closest_a.next().get(0); | ||
341 | + if (!$(closest_a_next).is(":visible")) { | ||
342 | + var closest_ul = $(closest_a_next.parentNode).closest("ul"); | ||
343 | + if (ismenumin && closest_ul.hasClass("nav-list")) { | ||
344 | + return | ||
345 | + } | ||
346 | + closest_ul.find("> .open > .submenu").each(function () { | ||
347 | + if (this != closest_a_next && !$(this.parentNode).hasClass("active")) { | ||
348 | + $(this).slideUp(150).parent().removeClass("open") | ||
349 | + } | ||
350 | + }); | ||
351 | + } | ||
352 | + if (ismenumin && $(closest_a_next.parentNode.parentNode).hasClass("nav-list")) { | ||
353 | + return false; | ||
354 | + } | ||
355 | + $(closest_a_next).slideToggle(150).parent().toggleClass("open"); | ||
356 | + return false; | ||
357 | + }); | ||
358 | + | ||
359 | + | ||
360 | + | ||
361 | +</script> | ||
362 | +</body> | ||
363 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | + <div class="wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('link/index')}">{:lang('ADMIN_LINK_INDEX')}</a></li> | ||
7 | + <li class="active"><a href="{:url('link/add')}">{:lang('ADMIN_LINK_ADD')}</a></li> | ||
8 | + </ul> | ||
9 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" action="{:url('link/addPost')}"> | ||
10 | + <div class="form-group"> | ||
11 | + <label for="input-name" class="col-sm-2 control-label">名称<span class="form-required">*</span></label> | ||
12 | + <div class="col-md-6 col-sm-10"> | ||
13 | + <input type="text" class="form-control" id="input-name" name="name"> | ||
14 | + </div> | ||
15 | + </div> | ||
16 | + <div class="form-group"> | ||
17 | + <label for="input-url" class="col-sm-2 control-label">链接地址<span class="form-required">*</span></label> | ||
18 | + <div class="col-md-6 col-sm-10"> | ||
19 | + <input type="text" class="form-control" id="input-url" name="url"> | ||
20 | + </div> | ||
21 | + </div> | ||
22 | + <div class="form-group"> | ||
23 | + <label for="input-image" class="col-sm-2 control-label">图标</label> | ||
24 | + <div class="col-md-6 col-sm-10"> | ||
25 | + <input type="text" class="form-control" id="input-image" name="image"> | ||
26 | + <a href="javascript:uploadOneImage('图片上传','#input-image');">上传图片</a> | ||
27 | + </div> | ||
28 | + </div> | ||
29 | + <div class="form-group"> | ||
30 | + <label for="input-target" class="col-sm-2 control-label">打开方式</label> | ||
31 | + <div class="col-md-6 col-sm-10"> | ||
32 | + <select class="form-control" name="target" id="input-target"> | ||
33 | + <foreach name="targets" item="vo"> | ||
34 | + <option value="{$key}">{$vo}</option> | ||
35 | + </foreach> | ||
36 | + </select> | ||
37 | + </div> | ||
38 | + </div> | ||
39 | + <div class="form-group"> | ||
40 | + <label for="input-description" class="col-sm-2 control-label">描述</label> | ||
41 | + <div class="col-md-6 col-sm-10"> | ||
42 | + <textarea class="form-control" name="description" id="input-description" ></textarea> | ||
43 | + </div> | ||
44 | + </div> | ||
45 | + <div class="form-group"> | ||
46 | + <div class="col-sm-offset-2 col-sm-10"> | ||
47 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang('ADD')}</button> | ||
48 | + <a class="btn btn-default" href="javascript:history.back(-1);">{:lang('BACK')}</a> | ||
49 | + </div> | ||
50 | + </div> | ||
51 | + </form> | ||
52 | + </div> | ||
53 | + <script src="__STATIC__/js/admin.js"></script> | ||
54 | +</body> | ||
55 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('link/index')}">{:lang('ADMIN_LINK_INDEX')}</a></li> | ||
7 | + <li><a href="{:url('link/add')}">{:lang('ADMIN_LINK_ADD')}</a></li> | ||
8 | + <li class="active"><a>编辑友情链接</a></li> | ||
9 | + </ul> | ||
10 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" action="{:url('link/editPost')}"> | ||
11 | + <div class="form-group"> | ||
12 | + <label for="input-link_name" class="col-sm-2 control-label">名称<span class="form-required">*</span></label> | ||
13 | + <div class="col-md-6 col-sm-10"> | ||
14 | + <input type="text" class="form-control" id="input-link_name" name="name" value="{$link.name}"> | ||
15 | + </div> | ||
16 | + </div> | ||
17 | + <div class="form-group"> | ||
18 | + <label for="input-link_url" class="col-sm-2 control-label">链接地址<span class="form-required">*</span></label> | ||
19 | + <div class="col-md-6 col-sm-10"> | ||
20 | + <input type="text" class="form-control" id="input-link_url" name="url" value="{$link.url}"> | ||
21 | + </div> | ||
22 | + </div> | ||
23 | + <div class="form-group"> | ||
24 | + <label for="input-link_image" class="col-sm-2 control-label">图标</label> | ||
25 | + <div class="col-md-6 col-sm-10"> | ||
26 | + <input type="text" class="form-control" id="input-link_image" name="image" value="{$link.image}"> | ||
27 | + <a href="javascript:uploadOneImage('图片上传','#input-link_image');">上传图片</a> | ||
28 | + </div> | ||
29 | + </div> | ||
30 | + <div class="form-group"> | ||
31 | + <label for="input-target" class="col-sm-2 control-label">打开方式</label> | ||
32 | + <div class="col-md-6 col-sm-10"> | ||
33 | + <select class="form-control" name="target" id="input-target"> | ||
34 | + <foreach name="targets" item="vo"> | ||
35 | + <php>$link_target_selected=$link['target']==$key?"selected='selected'":"";</php> | ||
36 | + <option value="{$key}" {$link_target_selected}>{$vo}</option> | ||
37 | + </foreach> | ||
38 | + </select> | ||
39 | + </div> | ||
40 | + </div> | ||
41 | + <div class="form-group"> | ||
42 | + <label for="input-link_description" class="col-sm-2 control-label">描述</label> | ||
43 | + <div class="col-md-6 col-sm-10"> | ||
44 | + <textarea class="form-control" name="description" | ||
45 | + id="input-link_description">{$link.description}</textarea> | ||
46 | + </div> | ||
47 | + </div> | ||
48 | + <div class="form-group"> | ||
49 | + <div class="col-sm-offset-2 col-sm-10"> | ||
50 | + <input type="hidden" name="id" value="{$link.id}"> | ||
51 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang('SAVE')}</button> | ||
52 | + <a class="btn btn-default" href="{:url('link/index')}">{:lang('BACK')}</a> | ||
53 | + </div> | ||
54 | + </div> | ||
55 | + </form> | ||
56 | +</div> | ||
57 | +<script src="__STATIC__/js/admin.js"></script> | ||
58 | +</body> | ||
59 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a href="{:url('link/index')}">所有友情链接</a></li> | ||
7 | + <li><a href="{:url('link/add')}">添加友情链接</a></li> | ||
8 | + </ul> | ||
9 | + <form method="post" class="js-ajax-form margin-top-20" action="{:url('Link/listOrder')}"> | ||
10 | + <div class="table-actions"> | ||
11 | + <button class="btn btn-primary btn-sm js-ajax-submit" type="submit">{:lang('SORT')}</button> | ||
12 | + <button class="btn btn-primary btn-sm js-ajax-submit" type="submit" | ||
13 | + data-action="{:url('link/toggle',array('display'=>1))}" data-subcheck="true">{:lang('DISPLAY')} | ||
14 | + </button> | ||
15 | + <button class="btn btn-primary btn-sm js-ajax-submit" type="submit" | ||
16 | + data-action="{:url('link/toggle',array('hide'=>1))}" data-subcheck="true">{:lang('HIDE')} | ||
17 | + </button> | ||
18 | + </div> | ||
19 | + <php>$status=array("1"=>lang('DISPLAY'),"0"=>lang('HIDDEN'));</php> | ||
20 | + <table class="table table-hover table-bordered table-list"> | ||
21 | + <thead> | ||
22 | + <tr> | ||
23 | + <th width="16"><label><input type="checkbox" class="js-check-all" data-direction="x" | ||
24 | + data-checklist="js-check-x"></label></th> | ||
25 | + <th width="50">{:lang('SORT')}</th> | ||
26 | + <th width="50">ID</th> | ||
27 | + <th>{:lang('NAME')}</th> | ||
28 | + <th>链接地址</th> | ||
29 | + <th width="50">{:lang('STATUS')}</th> | ||
30 | + <th width="120">{:lang('ACTIONS')}</th> | ||
31 | + </tr> | ||
32 | + </thead> | ||
33 | + <tbody> | ||
34 | + <foreach name="links" item="vo"> | ||
35 | + <tr> | ||
36 | + <td><input type="checkbox" class="js-check" data-yid="js-check-y" data-xid="js-check-x" name="ids[]" | ||
37 | + value="{$vo.id}"></td> | ||
38 | + <td><input name='list_orders[{$vo.id}]' class="input input-order mr5" type='text' size='3' | ||
39 | + value='{$vo.list_order}'></td> | ||
40 | + <td>{$vo.id}</td> | ||
41 | + <td>{$vo.name}</td> | ||
42 | + <td><a href="{$vo.url}" target="_blank">{$vo.url}</a></td> | ||
43 | + <td>{$status[$vo['status']]}</td> | ||
44 | + <td> | ||
45 | + <a href="{:url('link/edit',array('id'=>$vo['id']))}">{:lang('EDIT')}</a> | ||
46 | + <a href="{:url('link/delete',array('id'=>$vo['id']))}" class="js-ajax-delete"> | ||
47 | + {:lang('DELETE')} | ||
48 | + </a> | ||
49 | + </td> | ||
50 | + </tr> | ||
51 | + </foreach> | ||
52 | + </tbody> | ||
53 | + <tfoot> | ||
54 | + <tr> | ||
55 | + <th width="16"> | ||
56 | + <label> | ||
57 | + <input type="checkbox" class="js-check-all" data-direction="x" data-checklist="js-check-x"> | ||
58 | + </label> | ||
59 | + </th> | ||
60 | + <th width="50">{:lang('SORT')}</th> | ||
61 | + <th width="50">ID</th> | ||
62 | + <th>{:lang('NAME')}</th> | ||
63 | + <th>链接地址</th> | ||
64 | + <th width="50">{:lang('STATUS')}</th> | ||
65 | + <th width="120">{:lang('ACTIONS')}</th> | ||
66 | + </tr> | ||
67 | + </tfoot> | ||
68 | + </table> | ||
69 | + <div class="table-actions"> | ||
70 | + <button class="btn btn-primary btn-sm js-ajax-submit" type="submit">{:lang('SORT')}</button> | ||
71 | + <button class="btn btn-primary btn-sm js-ajax-submit" type="submit" | ||
72 | + data-action="{:url('link/toggle',array('display'=>1))}" data-subcheck="true">{:lang('DISPLAY')} | ||
73 | + </button> | ||
74 | + <button class="btn btn-primary btn-sm js-ajax-submit" type="submit" | ||
75 | + data-action="{:url('link/toggle',array('hide'=>1))}" data-subcheck="true">{:lang('HIDE')} | ||
76 | + </button> | ||
77 | + </div> | ||
78 | + </form> | ||
79 | +</div> | ||
80 | +<script src="__STATIC__/js/admin.js"></script> | ||
81 | +</body> | ||
82 | +</html> |
1 | +<!DOCTYPE html> | ||
2 | +<html lang="en" > | ||
3 | +<head> | ||
4 | + <meta content="webkit" name="renderer" /> | ||
5 | + <meta charset="utf-8"> | ||
6 | + <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
7 | + <meta name="robots" content="none" /> | ||
8 | + <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimal-ui"> | ||
9 | + | ||
10 | + <meta name="description" content="admin login"> | ||
11 | + <title>后台管理系统 - QnbugBMS</title> | ||
12 | + <link rel="stylesheet" href="__STATIC__/css/voyagerapp.css"> | ||
13 | + <style> | ||
14 | + body { | ||
15 | + background-image:url('__STATIC__/images/bg.jpg'); | ||
16 | + background-color: #FFFFFF; | ||
17 | + } | ||
18 | + body.login .login-sidebar { | ||
19 | + border-top:5px solid #22A7F0; | ||
20 | + } | ||
21 | + @media (max-width: 767px) { | ||
22 | + body.login .login-sidebar { | ||
23 | + border-top:0px !important; | ||
24 | + border-left:5px solid #22A7F0; | ||
25 | + } | ||
26 | + } | ||
27 | + body.login .form-group-default.focused{ | ||
28 | + border-color:#22A7F0; | ||
29 | + } | ||
30 | + .login-button, .bar:before, .bar:after{ | ||
31 | + background:#22A7F0; | ||
32 | + } | ||
33 | + </style> | ||
34 | + | ||
35 | + <!--<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,700" rel="stylesheet">--> | ||
36 | +</head> | ||
37 | +<body class="login"> | ||
38 | +<div class="container-fluid"> | ||
39 | + <div class="row"> | ||
40 | + <div class="faded-bg animated"></div> | ||
41 | + <div class="hidden-xs col-sm-7 col-md-8"> | ||
42 | + <div class="clearfix"> | ||
43 | + <div class="col-sm-12 col-md-10 col-md-offset-2"> | ||
44 | + <div class="logo-title-container"> | ||
45 | + <img class="img-responsive pull-left flip logo hidden-xs animated fadeIn" src="__STATIC__/images/logo-icon-light.png" alt="Logo Icon"> | ||
46 | + <div class="copy animated fadeIn"> | ||
47 | + <h1>Qnbug BMS</h1> | ||
48 | + <p>欢迎使用Qnbug BMS-Bussiness Management System ,后台管理系统</p> | ||
49 | + </div> | ||
50 | + </div> <!-- .logo-title-container --> | ||
51 | + </div> | ||
52 | + </div> | ||
53 | + </div> | ||
54 | + | ||
55 | + <div class="col-xs-12 col-sm-5 col-md-4 login-sidebar"> | ||
56 | + | ||
57 | + <div class="login-container"> | ||
58 | + | ||
59 | + <p>登录系统:</p> | ||
60 | + | ||
61 | + <form class="js-ajax-form" action="{:url('public/doLogin')}" method="POST"> | ||
62 | + <div class="form-group form-group-default" id="emailGroup"> | ||
63 | + <label>用户名</label> | ||
64 | + <div class="controls"> | ||
65 | + <input type="text" name="username" id="email" value="" placeholder="请输入用户名" class="form-control" required> | ||
66 | + </div> | ||
67 | + </div> | ||
68 | + | ||
69 | + <div class="form-group form-group-default" id="passwordGroup"> | ||
70 | + <label>密码</label> | ||
71 | + <div class="controls"> | ||
72 | + <input type="password" name="password" placeholder="请输入密码" class="form-control" required> | ||
73 | + </div> | ||
74 | + </div> | ||
75 | + | ||
76 | + <button class="btn btn-block login-button js-ajax-submit" type="submit" data-loadingmsg="正在登录中..."> | ||
77 | + 登录 | ||
78 | + </button> | ||
79 | + </form> | ||
80 | + | ||
81 | + <div style="clear:both"></div> | ||
82 | + | ||
83 | + | ||
84 | + </div> <!-- .login-container --> | ||
85 | + | ||
86 | + </div> <!-- .login-sidebar --> | ||
87 | + </div> <!-- .row --> | ||
88 | +</div> <!-- .container-fluid --> | ||
89 | +<script> | ||
90 | + var username = document.querySelector('[name="username"]'); | ||
91 | + var password = document.querySelector('[name="password"]'); | ||
92 | + username.focus(); | ||
93 | + document.getElementById('emailGroup').classList.add("focused"); | ||
94 | + | ||
95 | + // Focus events for email and password fields | ||
96 | + username.addEventListener('focusin', function(e){ | ||
97 | + document.getElementById('emailGroup').classList.add("focused"); | ||
98 | + }); | ||
99 | + username.addEventListener('focusout', function(e){ | ||
100 | + document.getElementById('emailGroup').classList.remove("focused"); | ||
101 | + }); | ||
102 | + | ||
103 | + password.addEventListener('focusin', function(e){ | ||
104 | + document.getElementById('passwordGroup').classList.add("focused"); | ||
105 | + }); | ||
106 | + password.addEventListener('focusout', function(e){ | ||
107 | + document.getElementById('passwordGroup').classList.remove("focused"); | ||
108 | + }); | ||
109 | + | ||
110 | +</script> | ||
111 | +<script type="text/javascript"> | ||
112 | + //全局变量 | ||
113 | + var GV = { | ||
114 | + ROOT: "__ROOT__/", | ||
115 | + WEB_ROOT: "__WEB_ROOT__/", | ||
116 | + JS_ROOT: "static/js/", | ||
117 | + APP: ''/*当前应用名*/ | ||
118 | + }; | ||
119 | +</script> | ||
120 | +<script src="__TMPL__/public/assets/js/jquery-1.10.2.min.js"></script> | ||
121 | +<script src="__STATIC__/js/wind.js"></script> | ||
122 | +<script src="__STATIC__/js/admin.js"></script> | ||
123 | +</body> | ||
124 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a href="{:url('mailer/index')}">{:lang('ADMIN_MAILER_INDEX')}</a></li> | ||
7 | + <li><a href="{:url('mailer/template')}?template_key=verification_code">数字验证码邮件模板</a></li> | ||
8 | + </ul> | ||
9 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" action="{:url('Admin/mailer/indexPost')}"> | ||
10 | + <div class="form-group"> | ||
11 | + <label for="input-from_name" class="col-sm-2 control-label"> | ||
12 | + <span class="form-required">*</span> | ||
13 | + {:lang('SENDER_NAME')} | ||
14 | + <a href="http://www.thinkcmf.com/faq.html?url=https://www.kancloud.cn/thinkcmf/faq/493502" | ||
15 | + title="查看帮助手册" | ||
16 | + data-toggle="tooltip" | ||
17 | + target="_blank"><i class="fa fa-question-circle"></i></a> | ||
18 | + </label> | ||
19 | + <div class="col-md-6 col-sm-10"> | ||
20 | + <input type="text" class="form-control" id="input-from_name" name="from_name" | ||
21 | + value="{$from_name|default=''}"> | ||
22 | + </div> | ||
23 | + </div> | ||
24 | + <div class="form-group"> | ||
25 | + <label for="input-from" class="col-sm-2 control-label"> | ||
26 | + <span class="form-required">*</span>{:lang('SENDER_EMAIL_ADDRESS')} | ||
27 | + </label> | ||
28 | + <div class="col-md-6 col-sm-10"> | ||
29 | + <input type="text" class="form-control" id="input-from" name="from" value="{$from|default=''}"> | ||
30 | + </div> | ||
31 | + </div> | ||
32 | + <div class="form-group"> | ||
33 | + <label for="input-host" class="col-sm-2 control-label"> | ||
34 | + <span class="form-required">*</span>{:lang('SENDER_SMTP_SERVER')} | ||
35 | + </label> | ||
36 | + <div class="col-md-6 col-sm-10"> | ||
37 | + <input type="text" class="form-control" id="input-host" name="host" value="{$host|default=''}"> | ||
38 | + </div> | ||
39 | + </div> | ||
40 | + <div class="form-group"> | ||
41 | + <label for="js-smtpsecure" class="col-sm-2 control-label"> | ||
42 | + <span class="form-required">*</span>连接方式 | ||
43 | + </label> | ||
44 | + <div class="col-md-6 col-sm-10"> | ||
45 | + <select name="smtp_secure" id="js-smtpsecure" class="form-control"> | ||
46 | + <option value="">默认</option> | ||
47 | + <option value="ssl">ssl</option> | ||
48 | + <option value="tls">tls</option> | ||
49 | + </select> | ||
50 | + </div> | ||
51 | + </div> | ||
52 | + <div class="form-group"> | ||
53 | + <label for="input-port" class="col-sm-2 control-label"> | ||
54 | + <span class="form-required">*</span>SMTP服务器端口 | ||
55 | + </label> | ||
56 | + <div class="col-md-6 col-sm-10"> | ||
57 | + <input type="text" class="form-control" id="input-port" name="port" value="{$port|default=''}" | ||
58 | + placeholder="默认为25"> | ||
59 | + </div> | ||
60 | + </div> | ||
61 | + <div class="form-group"> | ||
62 | + <label for="input-login_name" class="col-sm-2 control-label"> | ||
63 | + <span class="form-required">*</span>{:lang('SMTP_MAIL_ADDRESS')} | ||
64 | + </label> | ||
65 | + <div class="col-md-6 col-sm-10"> | ||
66 | + <input type="text" class="form-control" id="input-login_name" name="username" | ||
67 | + value="{$username|default=''}"> | ||
68 | + </div> | ||
69 | + </div> | ||
70 | + <div class="form-group"> | ||
71 | + <label for="input-password" class="col-sm-2 control-label"> | ||
72 | + <span class="form-required">*</span>{:lang('SMTP_MAIL_PASSWORD')} | ||
73 | + </label> | ||
74 | + <div class="col-md-6 col-sm-10"> | ||
75 | + <input type="password" class="form-control" id="input-password" name="password" | ||
76 | + value="{$password|default=''}"> | ||
77 | + </div> | ||
78 | + </div> | ||
79 | + <div class="form-group"> | ||
80 | + <div class="col-sm-offset-2 col-sm-10"> | ||
81 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang('SAVE')}</button> | ||
82 | + <a class="btn btn-warning" | ||
83 | + href="javascript:parent.openIframeDialog('{:url('mailer/test')}','发送测试邮件',{width:'600px',height:'400px'});">测试邮件</a> | ||
84 | + </div> | ||
85 | + </div> | ||
86 | + </form> | ||
87 | +</div> | ||
88 | +<script src="__STATIC__/js/admin.js"></script> | ||
89 | +<script> | ||
90 | + $(function () { | ||
91 | + $('#js-smtpsecure').val("{$smtp_secure|default=''}"); | ||
92 | + }); | ||
93 | +</script> | ||
94 | +</body> | ||
95 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('mailer/index')}">{:lang('ADMIN_MAILER_INDEX')}</a></li> | ||
7 | + <li class="active"><a href="#" data-toggle="tab">数字验证码邮件模板</a></li> | ||
8 | + </ul> | ||
9 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" role="form" | ||
10 | + action="{:url('admin/mailer/templatePost')}"> | ||
11 | + <div class="form-group"> | ||
12 | + <label for="input-title" class="col-sm-2 control-label"><span class="form-required">*</span>{:lang('EMAIL_SUBJECT')}</label> | ||
13 | + <div class="col-md-6 col-sm-10"> | ||
14 | + <input type="text" class="form-control" name="subject" id="input-title" value="{$subject|default=''}"> | ||
15 | + </div> | ||
16 | + </div> | ||
17 | + <div class="form-group"> | ||
18 | + <label for="input-title" class="col-sm-2 control-label"><span class="form-required">*</span>{:lang('EMAIL_TEMPLATE')}</label> | ||
19 | + <div class="col-md-6 col-sm-12"> | ||
20 | + <script type="text/plain" id="content" name="template">{$template|default=""|htmlspecialchars_decode}</script> | ||
21 | + <literal><span style="color: #ffb752;">请用{$code}代替数字验证码<!--,{$username}代替用户名--></span></literal> | ||
22 | + </div> | ||
23 | + </div> | ||
24 | + <div class="form-group"> | ||
25 | + <div class="col-sm-offset-2 col-sm-10"> | ||
26 | + <input type="hidden" name="template_key" value="verification_code"> | ||
27 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang('SAVE')}</button> | ||
28 | + </div> | ||
29 | + </div> | ||
30 | + </form> | ||
31 | +</div> | ||
32 | +<script src="__STATIC__/js/admin.js"></script> | ||
33 | +<script type="text/javascript"> | ||
34 | + //编辑器路径定义 | ||
35 | + var editorURL = GV.WEB_ROOT; | ||
36 | +</script> | ||
37 | +<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.config.js"></script> | ||
38 | +<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.all.min.js"></script> | ||
39 | +<script type="text/javascript"> | ||
40 | + var editorcontent = new baidu.editor.ui.Editor(); | ||
41 | + editorcontent.render('content'); | ||
42 | +</script> | ||
43 | +</body> | ||
44 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | + <div class="wrap"> | ||
5 | + <form method="post" class="form-horizontal js-ajax-form" action="{:url('mailer/test')}"> | ||
6 | + <div class="form-group"> | ||
7 | + <label for="input-to" class="col-sm-2 control-label"><span class="form-required">*</span>收件箱</label> | ||
8 | + <div class="col-md-6 col-sm-10"> | ||
9 | + <input type="text" class="form-control" id="input-to" name="to"> | ||
10 | + </div> | ||
11 | + </div> | ||
12 | + <div class="form-group"> | ||
13 | + <label for="input-subject" class="col-sm-2 control-label"><span class="form-required">*</span>标题</label> | ||
14 | + <div class="col-md-6 col-sm-10"> | ||
15 | + <input type="text" class="form-control" id="input-subject" name="subject"> | ||
16 | + </div> | ||
17 | + </div> | ||
18 | + <div class="form-group"> | ||
19 | + <label for="input-content" class="col-sm-2 control-label"><span class="form-required">*</span>内容</label> | ||
20 | + <div class="col-md-6 col-sm-10"> | ||
21 | + <textarea class="form-control" id="input-content" name="content"></textarea> | ||
22 | + </div> | ||
23 | + </div> | ||
24 | + <div class="form-group"> | ||
25 | + <div class="col-sm-offset-2 col-sm-10"> | ||
26 | + <button type="submit" class="btn btn-primary js-ajax-submit">发送</button> | ||
27 | + </div> | ||
28 | + </div> | ||
29 | + </form> | ||
30 | + </div> | ||
31 | + <script src="__STATIC__/js/admin.js"></script> | ||
32 | +</body> | ||
33 | +</html> |
1 | +<php>function _get_system_widget($name){</php> | ||
2 | +<switch name="name"> | ||
3 | + <case value="CmfHub"> | ||
4 | + <div class="panel panel-default"> | ||
5 | + <div class="panel-heading"> | ||
6 | + <h3 class="panel-title">联系我们</h3> | ||
7 | + </div> | ||
8 | + <div class="panel-body home-info"> | ||
9 | + <ul class="list-unstyled"> | ||
10 | + <li> | ||
11 | + <em>QnbugBMS官网</em> <span><a href="http://www.qnbug.cn" target="_blank">www.qnbug.cn</a></span> | ||
12 | + </li> | ||
13 | + <li><em>联系邮箱</em> <span>root@qnbug.cn</span></li> | ||
14 | + </ul> | ||
15 | + </div> | ||
16 | + </div> | ||
17 | + </case> | ||
18 | +</switch> | ||
19 | +<php>}</php> | ||
20 | + | ||
21 | + | ||
22 | + | ||
23 | +<include file="public@header"/> | ||
24 | +<style> | ||
25 | + .home-info li em { | ||
26 | + float: left; | ||
27 | + width: 120px; | ||
28 | + font-style: normal; | ||
29 | + font-weight: bold; | ||
30 | + } | ||
31 | + | ||
32 | + .home-info ul { | ||
33 | + padding: 0; | ||
34 | + margin: 0; | ||
35 | + } | ||
36 | + | ||
37 | + .panel { | ||
38 | + margin-bottom: 0; | ||
39 | + } | ||
40 | + | ||
41 | + .grid-sizer { | ||
42 | + width: 10%; | ||
43 | + } | ||
44 | + | ||
45 | + .grid-item { | ||
46 | + margin-bottom: 5px; | ||
47 | + padding: 5px; | ||
48 | + } | ||
49 | + | ||
50 | + .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { | ||
51 | + padding-left: 5px; | ||
52 | + padding-right: 5px; | ||
53 | + float: none; | ||
54 | + } | ||
55 | + | ||
56 | +</style> | ||
57 | +<hook name="admin_before_head_end"/> | ||
58 | +</head> | ||
59 | +<body> | ||
60 | +<div class="wrap"> | ||
61 | + <!--<empty name="has_smtp_setting">--> | ||
62 | + <!--<div class="grid-item col-md-12">--> | ||
63 | + <!--<div class="alert alert-danger alert-dismissible fade in" role="alert" style="margin-bottom: 0;">--> | ||
64 | + <!--<button type="button" class="close" data-dismiss="alert" aria-label="Close">--> | ||
65 | + <!--<span aria-hidden="true">×</span>--> | ||
66 | + <!--</button>--> | ||
67 | + <!--<strong>提示!</strong> 邮箱配置未完成,无法进行邮件发送!--> | ||
68 | + <!--<a href="#" data-dismiss="alert" aria-label="Close"--> | ||
69 | + <!--onclick="parent.openapp('{:url('Mailer/index')}','admin_mailer_index','邮箱配置');">现在设置</a>--> | ||
70 | + <!--</div>--> | ||
71 | + <!--</div>--> | ||
72 | + <!--</empty>--> | ||
73 | + | ||
74 | + <if condition="!extension_loaded('fileinfo')"> | ||
75 | + <div class="grid-item col-md-12"> | ||
76 | + <div class="alert alert-danger alert-dismissible fade in" role="alert" style="margin-bottom: 0;"> | ||
77 | + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> | ||
78 | + <span aria-hidden="true">×</span> | ||
79 | + </button> | ||
80 | + <strong>提示!</strong> php_fileinfo扩展没有开启,无法正常上传文件! | ||
81 | + </div> | ||
82 | + </div> | ||
83 | + </if> | ||
84 | + | ||
85 | + <div class="grid-item col-md-12" id="thinkcmf-notices-grid" style="display:block;"> | ||
86 | + <div class="dashboard-box"> | ||
87 | + <div class="panel panel-default"> | ||
88 | + <div class="panel-heading"> | ||
89 | + <h3 class="panel-title">系统通知</h3> | ||
90 | + </div> | ||
91 | + <div class="panel-body home-info"> | ||
92 | + <ul id="thinkcmf-notices" class="list-unstyled"> | ||
93 | + <li> | ||
94 | + <!--<img src="__TMPL__/public/assets/images/loading.gif" style="vertical-align: middle;"/>--> | ||
95 | + <span style="display: inline-block; vertical-align: middle;">暂无通知</span> | ||
96 | + </li> | ||
97 | + </ul> | ||
98 | + </div> | ||
99 | + </div> | ||
100 | + </div> | ||
101 | + </div> | ||
102 | + | ||
103 | + <div class="home-grid"> | ||
104 | + <!-- width of .grid-sizer used for columnWidth --> | ||
105 | + <div class="grid-sizer"></div> | ||
106 | + <foreach name="dashboard_widgets" item="vo"> | ||
107 | + <if condition="$vo.is_system"> | ||
108 | + <div class="grid-item col-md-12" data-system="1" data-widget="{$vo.name}"> | ||
109 | + <div class="dashboard-box">{:_get_system_widget($vo.name)}</div> | ||
110 | + </div> | ||
111 | + <else/> | ||
112 | + <present name="dashboard_widget_plugins[$vo['name']]"> | ||
113 | + <div class="grid-item col-md-{$dashboard_widget_plugins[$vo['name']]['width']}" data-system="0" | ||
114 | + data-widget="{$vo.name}"> | ||
115 | + <div class="dashboard-box">{$dashboard_widget_plugins[$vo.name]['view']}</div> | ||
116 | + </div> | ||
117 | + </present> | ||
118 | + | ||
119 | + </if> | ||
120 | + | ||
121 | + </foreach> | ||
122 | + </div> | ||
123 | +</div> | ||
124 | +<script src="__STATIC__/js/admin.js"></script> | ||
125 | +<php> | ||
126 | + $lang_set=defined('LANG_SET')?LANG_SET:''; | ||
127 | + $thinkcmf_version=defined('THINKCMF_VERSION')?THINKCMF_VERSION:''; | ||
128 | +</php> | ||
129 | +<script> | ||
130 | + | ||
131 | + Wind.css('dragula'); | ||
132 | + Wind.use('masonry', 'imagesloaded', 'dragula', function () { | ||
133 | + var $homeGrid = $('.home-grid').masonry({ | ||
134 | + // set itemSelector so .grid-sizer is not used in layout | ||
135 | + itemSelector: '.grid-item', | ||
136 | + // use element for option | ||
137 | + columnWidth: '.grid-sizer', | ||
138 | + percentPosition: true, | ||
139 | + horizontalOrder: false, | ||
140 | + transitionDuration: 0 | ||
141 | + }); | ||
142 | + | ||
143 | + $homeGrid.masonry('on', 'layoutComplete', function (event, laidOutItems) { | ||
144 | + }); | ||
145 | + | ||
146 | + | ||
147 | + $homeGrid.masonry(); | ||
148 | + | ||
149 | + var containers = []; | ||
150 | + $('.home-grid .grid-item').each(function () { | ||
151 | + containers.push(this); | ||
152 | + }); | ||
153 | + dragula(containers, { | ||
154 | + isContainer: function (el) { | ||
155 | + return false; // only elements in drake.containers will be taken into account | ||
156 | + }, | ||
157 | + moves: function (el, source, handle, sibling) { | ||
158 | + return true; // elements are always draggable by default | ||
159 | + }, | ||
160 | + accepts: function (el, target, source, sibling) { | ||
161 | + return true; // elements can be dropped in any of the `containers` by default | ||
162 | + }, | ||
163 | + invalid: function (el, handle) { | ||
164 | + return false; // don't prevent any drags from initiating by default | ||
165 | + }, | ||
166 | + direction: 'vertical', // Y axis is considered when determining where an element would be dropped | ||
167 | + copy: false, // elements are moved by default, not copied | ||
168 | + copySortSource: false, // elements in copy-source containers can be reordered | ||
169 | + revertOnSpill: false, // spilling will put the element back where it was dragged from, if this is true | ||
170 | + removeOnSpill: false, // spilling will `.remove` the element, if this is true | ||
171 | + mirrorContainer: document.body, // set the element that gets mirror elements appended | ||
172 | + ignoreInputTextSelection: true // allows users to select input text, see details below | ||
173 | + }).on('drop', function (el, target, source, sibling) { | ||
174 | + var $target = $(target); | ||
175 | + var targetClasses = $target.attr('class'); | ||
176 | + var targetDataWidget = $target.data('widget'); | ||
177 | + var targetDataSystem = $target.data('system'); | ||
178 | + var $source = $(source); | ||
179 | + var sourceClasses = $source.attr('class'); | ||
180 | + var sourceDataWidget = $source.data('widget'); | ||
181 | + var sourceDataSystem = $source.data('system'); | ||
182 | + $(source).append($(target).find('.dashboard-box').not('.gu-transit')); | ||
183 | + $(target).append(el); | ||
184 | + $target.attr('class', sourceClasses); | ||
185 | + $target.data('widget', sourceDataWidget); | ||
186 | + $target.data('system', sourceDataSystem); | ||
187 | + | ||
188 | + $source.attr('class', targetClasses); | ||
189 | + $source.data('widget', targetDataWidget); | ||
190 | + $source.data('system', targetDataSystem); | ||
191 | + $homeGrid.masonry(); | ||
192 | + | ||
193 | + _widgetSort(); | ||
194 | + }).on('shadow', function (el, container, source) { | ||
195 | + $homeGrid.masonry(); | ||
196 | + }); | ||
197 | + | ||
198 | + | ||
199 | + }); | ||
200 | + | ||
201 | + function _widgetSort() { | ||
202 | + | ||
203 | + var widgets = []; | ||
204 | + $('.home-grid .grid-item').each(function () { | ||
205 | + var $this = $(this); | ||
206 | + | ||
207 | + widgets.push({ | ||
208 | + name: $this.data('widget'), | ||
209 | + is_system: $this.data('system') | ||
210 | + }); | ||
211 | + }); | ||
212 | + | ||
213 | + $.ajax({ | ||
214 | + url: "{:url('main/dashboardWidget')}", | ||
215 | + type: 'post', | ||
216 | + dataType: 'json', | ||
217 | + data: {widgets: widgets}, | ||
218 | + success: function (data) { | ||
219 | + | ||
220 | + }, | ||
221 | + error: function () { | ||
222 | + | ||
223 | + }, | ||
224 | + complete: function () { | ||
225 | + | ||
226 | + } | ||
227 | + }); | ||
228 | + } | ||
229 | + | ||
230 | + | ||
231 | +</script> | ||
232 | +<hook name="admin_before_body_end"/> | ||
233 | +</body> | ||
234 | +</html> |
不能预览此文件类型
1 | +<include file="public@header" /> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | + <div class="wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('Menu/index')}">后台菜单</a></li> | ||
7 | + <li class="active"><a href="{:url('Menu/add')}">添加菜单</a></li> | ||
8 | + <li><a href="{:url('Menu/lists')}">所有菜单</a></li> | ||
9 | + </ul> | ||
10 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" action="{:url('menu/addPost')}"> | ||
11 | + <div class="form-group"> | ||
12 | + <label for="input-parent_id" class="col-sm-2 control-label"><span class="form-required">*</span>上级</label> | ||
13 | + <div class="col-md-6 col-sm-10"> | ||
14 | + <select class="form-control" name="parent_id" id="input-parent_id"> | ||
15 | + <option value="0">作为一级菜单</option>{$select_category} | ||
16 | + </select> | ||
17 | + </div> | ||
18 | + </div> | ||
19 | + <div class="form-group"> | ||
20 | + <label for="input-name" class="col-sm-2 control-label"><span class="form-required">*</span>名称</label> | ||
21 | + <div class="col-md-6 col-sm-10"> | ||
22 | + <input type="text" class="form-control" id="input-name" name="name"> | ||
23 | + </div> | ||
24 | + </div> | ||
25 | + <div class="form-group"> | ||
26 | + <label for="input-app" class="col-sm-2 control-label"><span class="form-required">*</span>应用</label> | ||
27 | + <div class="col-md-6 col-sm-10"> | ||
28 | + <input type="text" class="form-control" id="input-app" name="app"> | ||
29 | + </div> | ||
30 | + </div> | ||
31 | + <div class="form-group"> | ||
32 | + <label for="input-controller" class="col-sm-2 control-label"><span class="form-required">*</span>控制器</label> | ||
33 | + <div class="col-md-6 col-sm-10"> | ||
34 | + <input type="text" class="form-control" id="input-controller" name="controller"> | ||
35 | + </div> | ||
36 | + </div> | ||
37 | + <div class="form-group"> | ||
38 | + <label for="input-action" class="col-sm-2 control-label"><span class="form-required">*</span>方法</label> | ||
39 | + <div class="col-md-6 col-sm-10"> | ||
40 | + <input type="text" class="form-control" id="input-action" name="action"> | ||
41 | + </div> | ||
42 | + </div> | ||
43 | + <div class="form-group"> | ||
44 | + <label for="input-param" class="col-sm-2 control-label">参数</label> | ||
45 | + <div class="col-md-6 col-sm-10"> | ||
46 | + <input type="text" class="form-control" id="input-param" name="param"> | ||
47 | + <p class="help-block">例:id=3&p=3</p> | ||
48 | + </div> | ||
49 | + </div> | ||
50 | + <div class="form-group"> | ||
51 | + <label for="input-icon" class="col-sm-2 control-label">图标</label> | ||
52 | + <div class="col-md-6 col-sm-10"> | ||
53 | + <input type="text" class="form-control" id="input-icon" name="icon"> | ||
54 | + <p class="help-block"> | ||
55 | + <a href="http://www.thinkcmf.com/font/font_awesome/icons.html" target="_blank">选择图标</a> 不带前缀fa-,如fa-user => user | ||
56 | + </p> | ||
57 | + </div> | ||
58 | + </div> | ||
59 | + <div class="form-group"> | ||
60 | + <label for="input-remark" class="col-sm-2 control-label">备注</label> | ||
61 | + <div class="col-md-6 col-sm-10"> | ||
62 | + <textarea class="form-control" id="input-remark" name="remark"></textarea> | ||
63 | + </div> | ||
64 | + </div> | ||
65 | + <div class="form-group"> | ||
66 | + <label for="input-status" class="col-sm-2 control-label">状态</label> | ||
67 | + <div class="col-md-6 col-sm-10" id="input-status"> | ||
68 | + <select class="form-control" name="status"> | ||
69 | + <option value="1">在左侧菜单显示</option> | ||
70 | + <option value="0">在左侧菜单隐藏</option> | ||
71 | + </select> | ||
72 | + </div> | ||
73 | + </div> | ||
74 | + <div class="form-group"> | ||
75 | + <label for="input-type" class="col-sm-2 control-label">类型</label> | ||
76 | + <div class="col-md-6 col-sm-10"> | ||
77 | + <select class="form-control" name="type" id="input-type"> | ||
78 | + <option value="1">有界面可访问菜单</option> | ||
79 | + <option value="2">无界面可访问菜单</option> | ||
80 | + <option value="0">只作为菜单</option> | ||
81 | + </select> | ||
82 | + </div> | ||
83 | + </div> | ||
84 | + <div class="form-group"> | ||
85 | + <div class="col-sm-offset-2 col-sm-10"> | ||
86 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang('ADD')}</button> | ||
87 | + </div> | ||
88 | + </div> | ||
89 | + </form> | ||
90 | + </div> | ||
91 | + <script src="__STATIC__/js/admin.js"></script> | ||
92 | +</body> | ||
93 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | + <div class="wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('Menu/index')}">后台菜单</a></li> | ||
7 | + <li><a href="{:url('Menu/add')}">添加菜单</a></li> | ||
8 | + <li><a href="{:url('Menu/lists')}">所有菜单</a></li> | ||
9 | + <li class="active"><a>编辑菜单</a></li> | ||
10 | + </ul> | ||
11 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" action="{:url('menu/editPost')}"> | ||
12 | + <div class="form-group"> | ||
13 | + <label for="input-parent_id" class="col-sm-2 control-label"><span class="form-required">*</span>上级</label> | ||
14 | + <div class="col-md-6 col-sm-10"> | ||
15 | + <select class="form-control" name="parent_id" id="input-parent_id"> | ||
16 | + <option value="0">作为一级菜单</option>{$select_category} | ||
17 | + </select> | ||
18 | + </div> | ||
19 | + </div> | ||
20 | + <div class="form-group"> | ||
21 | + <label for="input-name" class="col-sm-2 control-label"><span class="form-required">*</span>名称</label> | ||
22 | + <div class="col-md-6 col-sm-10"> | ||
23 | + <input type="text" class="form-control" id="input-name" name="name" value="{$data.name}"> | ||
24 | + </div> | ||
25 | + </div> | ||
26 | + <div class="form-group"> | ||
27 | + <label for="input-app" class="col-sm-2 control-label"><span class="form-required">*</span>应用</label> | ||
28 | + <div class="col-md-6 col-sm-10"> | ||
29 | + <input type="text" class="form-control" id="input-app" name="app" value="{$data.app}"> | ||
30 | + </div> | ||
31 | + </div> | ||
32 | + <div class="form-group"> | ||
33 | + <label for="input-controller" class="col-sm-2 control-label"><span class="form-required">*</span>控制器</label> | ||
34 | + <div class="col-md-6 col-sm-10"> | ||
35 | + <input type="text" class="form-control" id="input-controller" name="controller" value="{$data.controller}"> | ||
36 | + </div> | ||
37 | + </div> | ||
38 | + <div class="form-group"> | ||
39 | + <label for="input-action" class="col-sm-2 control-label"><span class="form-required">*</span>方法</label> | ||
40 | + <div class="col-md-6 col-sm-10"> | ||
41 | + <input type="text" class="form-control" id="input-action" name="action" value="{$data.action}"> | ||
42 | + </div> | ||
43 | + </div> | ||
44 | + <div class="form-group"> | ||
45 | + <label for="input-param" class="col-sm-2 control-label">参数</label> | ||
46 | + <div class="col-md-6 col-sm-10"> | ||
47 | + <input type="text" class="form-control" id="input-param" name="param" value="{$data.param}"> | ||
48 | + <p class="help-block">例:id=3&p=3</p> | ||
49 | + </div> | ||
50 | + </div> | ||
51 | + <div class="form-group"> | ||
52 | + <label for="input-icon" class="col-sm-2 control-label">图标</label> | ||
53 | + <div class="col-md-6 col-sm-10"> | ||
54 | + <input type="text" class="form-control" id="input-icon" name="icon" value="{$data.icon}"> | ||
55 | + <p class="help-block"> | ||
56 | + <a href="http://www.thinkcmf.com/font/font_awesome/icons.html" target="_blank">选择图标</a> 不带前缀fa-,如fa-user => user | ||
57 | + </p> | ||
58 | + </div> | ||
59 | + </div> | ||
60 | + <div class="form-group"> | ||
61 | + <label for="input-remark" class="col-sm-2 control-label">备注</label> | ||
62 | + <div class="col-md-6 col-sm-10"> | ||
63 | + <textarea class="form-control" id="input-remark" name="remark">{$data.remark}</textarea> | ||
64 | + </div> | ||
65 | + </div> | ||
66 | + <div class="form-group"> | ||
67 | + <label for="input-status" class="col-sm-2 control-label">状态</label> | ||
68 | + <div class="col-md-6 col-sm-10" id="input-status"> | ||
69 | + <select class="form-control" name="status"> | ||
70 | + <option value="1">在左侧菜单显示</option> | ||
71 | + <php>$status_selected=empty($data['status'])?"selected":"";</php> | ||
72 | + <option value="0" {$status_selected}>在左侧菜单隐藏</option> | ||
73 | + </select> | ||
74 | + </div> | ||
75 | + </div> | ||
76 | + <div class="form-group"> | ||
77 | + <label for="input-type" class="col-sm-2 control-label">类型</label> | ||
78 | + <div class="col-md-6 col-sm-10"> | ||
79 | + <select class="form-control" name="type" id="input-type"> | ||
80 | + <option value="1">有界面可访问菜单</option> | ||
81 | + <php>$type2_selected=$data['type']==2?"selected":"";</php> | ||
82 | + <option value="2" {$type2_selected}>无界面可访问菜单</option> | ||
83 | + <php>$type_selected=$data['type']==0?"selected":"";</php> | ||
84 | + <option value="0" {$type_selected}>只作为菜单</option> | ||
85 | + </select> | ||
86 | + </div> | ||
87 | + </div> | ||
88 | + <div class="form-group"> | ||
89 | + <div class="col-sm-offset-2 col-sm-10"> | ||
90 | + <input type="hidden" name="id" value="{$data.id}" /> | ||
91 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang('SAVE')}</button> | ||
92 | + <a class="btn btn-default" href="{:url('menu/index')}">{:lang('BACK')}</a> | ||
93 | + </div> | ||
94 | + </div> | ||
95 | + </form> | ||
96 | + </div> | ||
97 | + <script src="__STATIC__/js/admin.js"></script> | ||
98 | +</body> | ||
99 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | + <div class="wrap"> | ||
5 | + <div id="error_tips"> | ||
6 | + <h2>应用{$app}菜单导入成功!</h2> | ||
7 | + <div class="error_cont"> | ||
8 | + <ul> | ||
9 | + <if condition="!empty($new_menus)"> | ||
10 | + <foreach name="new_menus" item="vo"> | ||
11 | + <li>{$vo}</li> | ||
12 | + </foreach> | ||
13 | + <else /> | ||
14 | + <li>应用{$app}没有新菜单导入!</li> | ||
15 | + </if> | ||
16 | + </ul> | ||
17 | + <if condition="!empty($next_app)"> | ||
18 | + <script> | ||
19 | + setTimeout(function() { | ||
20 | + location.href = "{:url('admin/menu/getactions',array('app'=>$next_app))}"; | ||
21 | + }, 1000); | ||
22 | + </script> | ||
23 | + <div class="error_return"> | ||
24 | + <a href="{:url('admin/menu/getActions',array('app'=>$next_app))}" class="btn btn-primary">下一个应用</a> | ||
25 | + <a href="{:url('admin/menu/index')}" class="btn btn-default" style="margin-left: 10px;">返回</a> | ||
26 | + </div> | ||
27 | + <else /> | ||
28 | + <div>全部导入成功!</div> | ||
29 | + <div class="error_return"> | ||
30 | + <a href="{:url('menu/index')}" class="btn btn-default">返回</a> | ||
31 | + </div> | ||
32 | + </if> | ||
33 | + </div> | ||
34 | + </div> | ||
35 | + </div> | ||
36 | + <script src="__STATIC__/js/admin.js"></script> | ||
37 | +</body> | ||
38 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a href="{:url('Menu/index')}">后台菜单</a></li> | ||
7 | + <li><a href="{:url('Menu/add')}">添加菜单</a></li> | ||
8 | + <li><a href="{:url('Menu/lists')}">所有菜单</a></li> | ||
9 | + </ul> | ||
10 | + <form class="js-ajax-form" action="{:url('Menu/listOrder')}" method="post"> | ||
11 | + <div class="table-actions"> | ||
12 | + <button class="btn btn-primary btn-sm js-ajax-submit" type="submit">{:lang('SORT')}</button> | ||
13 | + </div> | ||
14 | + <table class="table table-hover table-bordered table-list" id="menus-table"> | ||
15 | + <thead> | ||
16 | + <tr> | ||
17 | + <th width="80">{:lang('SORT')}</th> | ||
18 | + <th width="50">ID</th> | ||
19 | + <th>{:lang('NAME')}</th> | ||
20 | + <th>操作</th> | ||
21 | + <th width="80">{:lang('STATUS')}</th> | ||
22 | + <th width="180">{:lang('ACTIONS')}</th> | ||
23 | + </tr> | ||
24 | + </thead> | ||
25 | + <tbody> | ||
26 | + {$category} | ||
27 | + </tbody> | ||
28 | + <tfoot> | ||
29 | + <tr> | ||
30 | + <th width="80">{:lang('SORT')}</th> | ||
31 | + <th width="50">ID</th> | ||
32 | + <th>{:lang('NAME')}</th> | ||
33 | + <th>操作</th> | ||
34 | + <th width="80">{:lang('STATUS')}</th> | ||
35 | + <th width="180">{:lang('ACTIONS')}</th> | ||
36 | + </tr> | ||
37 | + </tfoot> | ||
38 | + </table> | ||
39 | + <div class="table-actions"> | ||
40 | + <button class="btn btn-primary btn-sm js-ajax-submit" type="submit">{:lang('SORT')}</button> | ||
41 | + </div> | ||
42 | + </form> | ||
43 | +</div> | ||
44 | +<script src="__STATIC__/js/admin.js"></script> | ||
45 | +<script> | ||
46 | + $(document).ready(function() { | ||
47 | + Wind.css('treeTable'); | ||
48 | + Wind.use('treeTable', function() { | ||
49 | + $("#menus-table").treeTable({ | ||
50 | + indent : 20 | ||
51 | + }); | ||
52 | + }); | ||
53 | + }); | ||
54 | +</script> | ||
55 | +</body> | ||
56 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | + <div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('Menu/index')}">后台菜单</a></li> | ||
7 | + <li><a href="{:url('Menu/add')}">添加菜单</a></li> | ||
8 | + <li class="active"><a href="{:url('Menu/lists')}">所有菜单</a></li> | ||
9 | + </ul> | ||
10 | + <form class="form-horizontal js-ajax-form" action="{:url('menu/listorders')}" method="post"> | ||
11 | + <div class="table-actions"> | ||
12 | + <a class="btn btn-primary btn-sm js-ajax-dialog-btn" href="{:url('menu/exportMenuLang')}" data-msg="您确定生成菜单多语言包吗?请确保应用目录下lang目录可写!">生成菜单多语言包</a> | ||
13 | + <a class="btn btn-warning btn-sm" href="{:url('menu/getactions')}">导入新菜单</a> | ||
14 | + </div> | ||
15 | + <div class="alert alert-warning" style="margin: 0 0 5px 0;"> | ||
16 | + 请在开发人员指导下进行以上操作! | ||
17 | + </div> | ||
18 | + <table class="table table-hover table-bordered table-list"> | ||
19 | + <thead> | ||
20 | + <tr> | ||
21 | + <th width="50">ID</th> | ||
22 | + <th>菜单英文名称</th> | ||
23 | + <th width="50">状态</th> | ||
24 | + <th width="90">管理操作</th> | ||
25 | + </tr> | ||
26 | + </thead> | ||
27 | + <foreach name="menus" item="vo"> | ||
28 | + <tr> | ||
29 | + <td>{$vo.id}</td> | ||
30 | + <td>{$vo.name}:{$vo.app}/{$vo.controller}/{$vo.action}</td> | ||
31 | + <td> | ||
32 | + <if condition="$vo['status'] eq 1"> | ||
33 | + 显示 | ||
34 | + <else /> | ||
35 | + 隐藏 | ||
36 | + </if> | ||
37 | + </td> | ||
38 | + <td> | ||
39 | + <a href="{:url('menu/edit',array('id'=>$vo['id']))}">编辑</a> | ||
40 | + <a class="js-ajax-delete" href="{:url('menu/delete',array('id'=>$vo['id']))}">删除</a> | ||
41 | + </td> | ||
42 | + </tr> | ||
43 | + </foreach> | ||
44 | + <tfoot> | ||
45 | + <tr> | ||
46 | + <th width="50">ID</th> | ||
47 | + <th>菜单英文名称</th> | ||
48 | + <th width="40">状态</th> | ||
49 | + <th width="80">管理操作</th> | ||
50 | + </tr> | ||
51 | + </tfoot> | ||
52 | + </table> | ||
53 | + </form> | ||
54 | + </div> | ||
55 | + <script src="__STATIC__/js/admin.js"></script> | ||
56 | +</body> | ||
57 | +</html> |
不能预览此文件类型
不能预览此文件类型
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('nav/index')}">{:lang('ADMIN_NAV_INDEX')}</a></li> | ||
7 | + <li class="active"><a href="{:url('nav/add')}">{:lang('ADMIN_NAV_ADD')}</a></li> | ||
8 | + <!--<li><a href="{:url('nav/edit')}" >{:lang('ADMIN_NAV_EDIT')}</a></li>--> | ||
9 | + </ul> | ||
10 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" action="{:url('nav/addPost')}"> | ||
11 | + | ||
12 | + <div class="form-group"> | ||
13 | + <label class="col-sm-2 control-label"><span class="form-required">*</span>名称:</label> | ||
14 | + <div class="col-md-6 col-sm-10"> | ||
15 | + <input type="text" class="form-control" name="name" value=""> | ||
16 | + </div> | ||
17 | + </div> | ||
18 | + <div class="form-group"> | ||
19 | + <label class="col-sm-2 control-label">备注:</label> | ||
20 | + <div class="col-md-6 col-sm-10"> | ||
21 | + <textarea class="form-control" name="remark" rows="5" cols="57"></textarea> | ||
22 | + </div> | ||
23 | + </div> | ||
24 | + <div class="form-group"> | ||
25 | + <label class="col-sm-2 control-label">主菜单:</label> | ||
26 | + <div class="col-md-6 col-sm-10"> | ||
27 | + <div class="checkbox"> | ||
28 | + <label> | ||
29 | + <input type="checkbox" name="is_main" value="1" > | ||
30 | + </label> | ||
31 | + </div> | ||
32 | + | ||
33 | + </div> | ||
34 | + </div> | ||
35 | + | ||
36 | + <div class="col-sm-offset-2 col-sm-10"> | ||
37 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang("SAVE")}</button> | ||
38 | + <a class="btn btn-default" href="{:url('Nav/index')}">返回</a> | ||
39 | + </div> | ||
40 | + </form> | ||
41 | + | ||
42 | +</div> | ||
43 | +<script src="__STATIC__/js/admin.js"></script> | ||
44 | +</body> | ||
45 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('nav/index')}">{:lang('ADMIN_NAV_INDEX')}</a></li> | ||
7 | + <li><a href="{:url('nav/add')}">{:lang('ADMIN_NAV_ADD')}</a></li> | ||
8 | + <li class="active" ><a>{:lang('ADMIN_NAV_EDIT')}</a></li> | ||
9 | + </ul> | ||
10 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" action="{:url('nav/editPost')}"> | ||
11 | + | ||
12 | + <div class="form-group"> | ||
13 | + <label class="col-sm-2 control-label"><span class="form-required">*</span>名称:</label> | ||
14 | + <div class="col-md-6 col-sm-10"> | ||
15 | + <input type="hidden" name="id" value="{$id}"> | ||
16 | + <input type="text" class="form-control" name="name" value="{$name}"> | ||
17 | + </div> | ||
18 | + </div> | ||
19 | + <div class="form-group"> | ||
20 | + <label class="col-sm-2 control-label">备注:</label> | ||
21 | + <div class="col-md-6 col-sm-10"> | ||
22 | + <textarea class="form-control" name="remark" >{$remark}</textarea> | ||
23 | + </div> | ||
24 | + </div> | ||
25 | + <div class="form-group"> | ||
26 | + <label class="col-sm-2 control-label">主菜单:</label> | ||
27 | + <div class="col-md-6 col-sm-10"> | ||
28 | + <div class="checkbox"> | ||
29 | + <label> | ||
30 | + <php>$strMainMenuChecked=$is_main?"checked":"";</php> | ||
31 | + <input type="checkbox" name="is_main" value="1" {$strMainMenuChecked} > | ||
32 | + </label> | ||
33 | + </div> | ||
34 | + | ||
35 | + </div> | ||
36 | + </div> | ||
37 | + | ||
38 | + <div class="col-sm-offset-2 col-sm-10"> | ||
39 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang("SAVE")}</button> | ||
40 | + <a class="btn btn-default" href="{:url('Nav/index')}">返回</a> | ||
41 | + </div> | ||
42 | + </form> | ||
43 | + | ||
44 | +</div> | ||
45 | +<script src="__STATIC__/js/admin.js"></script> | ||
46 | +</body> | ||
47 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a href="{:url('nav/index')}">所有导航</a></li> | ||
7 | + <li><a href="{:url('nav/add')}">添加导航</a></li> | ||
8 | + </ul> | ||
9 | + <form action="{:url('Rbac/listorders')}" method="post" class="margin-top-20"> | ||
10 | + <php> $is_main=array("1"=>'是',"0"=>'否');</php> | ||
11 | + <table class="table table-hover table-bordered"> | ||
12 | + <thead> | ||
13 | + <tr> | ||
14 | + <th width="40">ID</th> | ||
15 | + <th>名称</th> | ||
16 | + <th width="80">主导航</th> | ||
17 | + <th>描述</th> | ||
18 | + <th width="160">{:lang('ACTIONS')}</th> | ||
19 | + </tr> | ||
20 | + </thead> | ||
21 | + <tbody> | ||
22 | + <foreach name="navs" item="vo"> | ||
23 | + <tr> | ||
24 | + <td>{$vo.id}</td> | ||
25 | + <td>{$vo.name}</td> | ||
26 | + <td>{$is_main[$vo.is_main]}</td> | ||
27 | + <td>{$vo.remark}</td> | ||
28 | + <td> | ||
29 | + <a href="javascript:parent.openIframeLayer('{:url('NavMenu/index',array('nav_id'=>$vo['id']))}','{$vo.name}菜单管理',{});">菜单管理</a> | ||
30 | + <a href="{:url('nav/edit',array('id'=>$vo['id']))}">{:lang('EDIT')}</a> | ||
31 | + <a class="js-ajax-delete" href="{:url('nav/delete',array('id'=>$vo['id']))}">{:lang('DELETE')}</a> | ||
32 | + </td> | ||
33 | + </tr> | ||
34 | + </foreach> | ||
35 | + </tbody> | ||
36 | + </table> | ||
37 | + </form> | ||
38 | +</div> | ||
39 | +<script src="__STATIC__/js/admin.js"></script> | ||
40 | +</body> | ||
41 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('NavMenu/index',['nav_id'=>$nav_id])}">导航菜单</a></li> | ||
7 | + <li class="active"><a>{:lang('ADMIN_MENU_ADD')}</a></li> | ||
8 | + </ul> | ||
9 | + | ||
10 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" action="{:url('NavMenu/addPost')}"> | ||
11 | + <fieldset> | ||
12 | + <div class="form-group"> | ||
13 | + <label class="col-sm-2 control-label">上级:</label> | ||
14 | + <div class="col-md-6 col-sm-10"> | ||
15 | + <select name="parent_id" class="form-control"> | ||
16 | + <option value="0">/</option> | ||
17 | + {$nav_trees} | ||
18 | + </select> | ||
19 | + </div> | ||
20 | + </div> | ||
21 | + <div class="form-group form-inline"> | ||
22 | + <label class="col-sm-2 control-label"><span class="form-required">*</span>地址:</label> | ||
23 | + <div class="col-md-6 col-sm-10"> | ||
24 | + <input type="radio" id="external-link-radio"> | ||
25 | + <input type="text" class="form-control" name="href" id="external-link-input"> | ||
26 | + <input type="radio" id="select-href-radio"> | ||
27 | + <select name="href" id="select-href" class="form-control"> | ||
28 | + <option value="{:base64_encode('home')}" data-name="首页">首页</option> | ||
29 | + <foreach name="navs" item="vo"> | ||
30 | + <optgroup label="{$vo.name}"> | ||
31 | + {$vo.html} | ||
32 | + </optgroup> | ||
33 | + </foreach> | ||
34 | + </select> | ||
35 | + </div> | ||
36 | + </div> | ||
37 | + <div class="form-group"> | ||
38 | + <label class="col-sm-2 control-label"><span class="form-required">*</span>菜单名称:</label> | ||
39 | + <div class="col-md-6 col-sm-10"> | ||
40 | + <input type="text" class="form-control" name="name" id="name-input"> | ||
41 | + </div> | ||
42 | + </div> | ||
43 | + <div class="form-group"> | ||
44 | + <label class="col-sm-2 control-label">打开方式:</label> | ||
45 | + <div class="col-md-6 col-sm-10"> | ||
46 | + <select class="form-control" name="target"> | ||
47 | + <option value="">默认方式</option> | ||
48 | + <option value="_blank">新窗口打开</option> | ||
49 | + </select> | ||
50 | + </div> | ||
51 | + </div> | ||
52 | + <div class="form-group"> | ||
53 | + <label class="col-sm-2 control-label">图标:</label> | ||
54 | + <div class="col-md-6 col-sm-10"> | ||
55 | + <input type="text" class="form-control" name="icon" value=""> | ||
56 | + </div> | ||
57 | + </div> | ||
58 | + <div class="form-group"> | ||
59 | + <label class="col-sm-2 control-label">显示:</label> | ||
60 | + <div class="col-md-6 col-sm-10"> | ||
61 | + <select name="status" class="form-control"> | ||
62 | + <option value="1">显示</option> | ||
63 | + <option value="0">隐藏</option> | ||
64 | + </select> | ||
65 | + </div> | ||
66 | + </div> | ||
67 | + </fieldset> | ||
68 | + | ||
69 | + <div class="col-sm-offset-2 col-sm-10"> | ||
70 | + <input type="hidden" name="nav_id" value="{$nav_id}"/> | ||
71 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang("SAVE")}</button> | ||
72 | + <a class="btn btn-default" href="{:url('NavMenu/index',['nav_id'=>$nav_id])}">返回</a> | ||
73 | + </div> | ||
74 | + </form> | ||
75 | + | ||
76 | +</div> | ||
77 | +<script src="__STATIC__/js/admin.js"></script> | ||
78 | +<script> | ||
79 | + $(function () { | ||
80 | + $("#select-href,#select-href-radio").click(function () { | ||
81 | + checkChange(2); | ||
82 | + }); | ||
83 | + | ||
84 | + $("#select-href").change(function () { | ||
85 | + var $this = $(this); | ||
86 | + var label = $this.find("option[value='" + $this.val() + "']").data('name'); | ||
87 | + $('#name-input').val(label); | ||
88 | + }); | ||
89 | + | ||
90 | + $("#external-link-input,#external-link-radio").click(function () { | ||
91 | + checkChange(1); | ||
92 | + }); | ||
93 | + | ||
94 | + function checkChange(i) { | ||
95 | + if (i == 1) { | ||
96 | + //自动输入url | ||
97 | + $('#external-link-input').attr('name', 'external_href'); | ||
98 | + $('#select-href').removeAttr('name'); | ||
99 | + $('#select-href-radio').prop('checked', false); | ||
100 | + $('#external-link-radio').prop('checked', true); | ||
101 | + } else { | ||
102 | + //选择链接url | ||
103 | + $('#select-href').attr('name', 'href'); | ||
104 | + $('#external-link-input').removeAttr('name'); | ||
105 | + $('#select-href-radio').prop('checked', true); | ||
106 | + $('#external-link-radio').prop('checked', false); | ||
107 | + } | ||
108 | + } | ||
109 | + }); | ||
110 | +</script> | ||
111 | +</body> | ||
112 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('NavMenu/index',['nav_id'=>$nav_id])}">导航菜单</a></li> | ||
7 | + <li><a href="{:url('NavMenu/add',['nav_id'=>$nav_id])}">{:lang('ADMIN_MENU_ADD')}</a> | ||
8 | + </li> | ||
9 | + <li class="active"><a>{:lang('ADMIN_MENU_EDIT')}</a></li> | ||
10 | + </ul> | ||
11 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" action="{:url('NavMenu/editPost')}"> | ||
12 | + <fieldset> | ||
13 | + <div class="form-group"> | ||
14 | + <label class="col-sm-2 control-label">上级:</label> | ||
15 | + <div class="col-md-6 col-sm-10"> | ||
16 | + <select name="parent_id" class="form-control"> | ||
17 | + <option value="0">/</option> | ||
18 | + {$nav_trees} | ||
19 | + </select> | ||
20 | + </div> | ||
21 | + </div> | ||
22 | + <div class="form-group form-inline"> | ||
23 | + <label class="col-sm-2 control-label"><span class="form-required">*</span>地址:</label> | ||
24 | + <div class="col-md-6 col-sm-10"> | ||
25 | + <input type="radio" id="external-link-radio"> | ||
26 | + <input type="text" class="form-control" name="href" id="external-link-input"> | ||
27 | + <input type="radio" id="select-href-radio"> | ||
28 | + <select name="href" id="select-href" class="form-control"> | ||
29 | + <option value="{:base64_encode('home')}" data-name="首页">首页</option> | ||
30 | + <foreach name="navs" item="vo"> | ||
31 | + <optgroup label="{$vo.name}"> | ||
32 | + {$vo.html} | ||
33 | + </optgroup> | ||
34 | + </foreach> | ||
35 | + </select> | ||
36 | + </div> | ||
37 | + </div> | ||
38 | + <div class="form-group"> | ||
39 | + <label class="col-sm-2 control-label"><span class="form-required">*</span>菜单名称:</label> | ||
40 | + <div class="col-md-6 col-sm-10"> | ||
41 | + <input type="text" class="form-control" name="name" id="name-input" value="{$name}"> | ||
42 | + </div> | ||
43 | + </div> | ||
44 | + <div class="form-group"> | ||
45 | + <label class="col-sm-2 control-label">打开方式:</label> | ||
46 | + <div class="col-md-6 col-sm-10"> | ||
47 | + <select name="target" class="form-control"> | ||
48 | + <option value="">默认方式</option> | ||
49 | + <option {$target=='_blank'?'selected':''} value="_blank">新窗口打开</option> | ||
50 | + </select> | ||
51 | + </div> | ||
52 | + </div> | ||
53 | + <div class="form-group"> | ||
54 | + <label class="col-sm-2 control-label">图标:</label> | ||
55 | + <div class="col-md-6 col-sm-10"> | ||
56 | + <input type="text" class="form-control" name="icon" value="{$icon}"> | ||
57 | + </div> | ||
58 | + </div> | ||
59 | + <div class="form-group"> | ||
60 | + <label class="col-sm-2 control-label">显示:</label> | ||
61 | + <div class="col-md-6 col-sm-10"> | ||
62 | + <select name="status" class="form-control"> | ||
63 | + <option value="1">显示</option> | ||
64 | + <php>$status_selected=empty($status)?"selected":"";</php> | ||
65 | + <option value="0" {$status_selected}>隐藏</option> | ||
66 | + </select> | ||
67 | + </div> | ||
68 | + </div> | ||
69 | + </fieldset> | ||
70 | + | ||
71 | + <div class="col-sm-offset-2 col-sm-10"> | ||
72 | + <input type="hidden" name="id" value="{$id}"> | ||
73 | + <input type="hidden" name="nav_id" value="{$nav_id}"> | ||
74 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang("SAVE")}</button> | ||
75 | + <a class="btn btn-default" href="{:url('NavMenu/index',['nav_id'=>$nav_id])}">返回</a> | ||
76 | + </div> | ||
77 | + </form> | ||
78 | + | ||
79 | +</div> | ||
80 | +<script src="__STATIC__/js/admin.js"></script> | ||
81 | +<script> | ||
82 | + $(function () { | ||
83 | + $("#select-href,#select-href-radio").click(function () { | ||
84 | + checkChange(2); | ||
85 | + }); | ||
86 | + | ||
87 | + $("#select-href").change(function () { | ||
88 | + var $this = $(this); | ||
89 | + var label = $this.find("option[value='" + $this.val() + "']").data('name'); | ||
90 | + $('#name-input').val(label); | ||
91 | + }); | ||
92 | + | ||
93 | + $("#external-link-input,#external-link-radio").click(function () { | ||
94 | + checkChange(1); | ||
95 | + }); | ||
96 | + | ||
97 | + var opt = $("#select-href option[value='" + '{$href}' + "']"); | ||
98 | + if (opt.length > 0) { | ||
99 | + opt.prop('selected', true); | ||
100 | + checkChange(2); | ||
101 | + } else { | ||
102 | + checkChange(1); | ||
103 | + $('#external-link-input').val('{$href}'); | ||
104 | + } | ||
105 | + | ||
106 | + function checkChange(i) { | ||
107 | + if (i == 1) { | ||
108 | + //自动输入url | ||
109 | + $('#external-link-input').attr('name', 'external_href'); | ||
110 | + $('#select-href').removeAttr('name'); | ||
111 | + $('#select-href-radio').prop('checked', false); | ||
112 | + $('#external-link-radio').prop('checked', true); | ||
113 | + } else { | ||
114 | + //选择链接url | ||
115 | + $('#select-href').attr('name', 'href'); | ||
116 | + $('#external-link-input').removeAttr('name'); | ||
117 | + $('#select-href-radio').prop('checked', true); | ||
118 | + $('#external-link-radio').prop('checked', false); | ||
119 | + } | ||
120 | + } | ||
121 | + }); | ||
122 | +</script> | ||
123 | +</body> | ||
124 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a href="{:url('NavMenu/index',['nav_id'=>$nav_id])}">导航菜单</a></li> | ||
7 | + <li><a href="{:url('NavMenu/add',['nav_id'=>$nav_id])}">添加菜单</a></li> | ||
8 | + </ul> | ||
9 | + <form class="js-ajax-form margin-top-20" action="{:url('NavMenu/listOrder')}" method="post"> | ||
10 | + <div class="table-actions"> | ||
11 | + <button class="btn btn-primary btn-sm js-ajax-submit" type="submit">排序</button> | ||
12 | + </div> | ||
13 | + <table class="table table-hover table-bordered"> | ||
14 | + <thead> | ||
15 | + <tr> | ||
16 | + <th width="50">排序</th> | ||
17 | + <th width="50">ID</th> | ||
18 | + <th>菜单名称</th> | ||
19 | + <th width="80">状态</th> | ||
20 | + <th width="180">{:lang('ACTIONS')}</th> | ||
21 | + </tr> | ||
22 | + </thead> | ||
23 | + <tbody> | ||
24 | + {$categories} | ||
25 | + </tbody> | ||
26 | + </table> | ||
27 | + </form> | ||
28 | +</div> | ||
29 | +<script src="__STATIC__/js/admin.js"></script> | ||
30 | +</body> | ||
31 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +<style type="text/css"> | ||
3 | + .pagination{display:inline-block;padding-left:0;border-radius:4px;margin-left: 30%} | ||
4 | + .pagination li{display:inline} | ||
5 | + .pagination li a,.pagination li span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;color:#393D49;background:#fff;margin:0 0 0 8px;border:1px solid #eee} | ||
6 | + .pagination li a:hover{color:#fff;background:#1E9FFF} | ||
7 | + .pagination .active span{background:#1E9FFF;color:#fff} | ||
8 | +</style> | ||
9 | +</head> | ||
10 | +<body> | ||
11 | + <div class="wrap"> | ||
12 | + <ul class="nav nav-tabs"> | ||
13 | + <li class="active"><a href="{:url('index')}">列表管理</a></li> | ||
14 | + <!--<li><a href="{:url('add')}">添加</a></li>--> | ||
15 | + </ul> | ||
16 | + <form class="well form-inline margin-top-20" method="post" action="{:url('index')}"> | ||
17 | + | ||
18 | + | ||
19 | + 状态: | ||
20 | + <select class="form-control" name="status" style="width: 140px;"> | ||
21 | + <option value=''>全部</option> | ||
22 | + <option value='1'>已付款</option> | ||
23 | + <option value='0'>待付款</option> | ||
24 | + </select> | ||
25 | + | ||
26 | + 学员手机号: | ||
27 | + <input type="text" class="form-control" name="mobile" style="width: 200px;" | ||
28 | + value="{$keyword|default=''}" placeholder="请输入手机号..."> | ||
29 | + | ||
30 | + | ||
31 | + <input type="submit" class="btn btn-primary" value="搜索"/> | ||
32 | + <a class="btn btn-danger" href="{:url('index')}">清空</a> | ||
33 | + </form> | ||
34 | + <table class="table table-hover table-bordered table-list"> | ||
35 | + <thead> | ||
36 | + <tr> | ||
37 | + <th width="50">ID</th> | ||
38 | + | ||
39 | + <th>订单号</th> | ||
40 | + <th>报名类型</th> | ||
41 | + <th>学生姓名</th> | ||
42 | + <th>手机号</th> | ||
43 | + <th>金额</th> | ||
44 | + <th>实际付款</th> | ||
45 | + <th>下单时间</th> | ||
46 | + <th>状态</th> | ||
47 | + <th>操作</th> | ||
48 | + </tr> | ||
49 | + </thead> | ||
50 | + <tbody> | ||
51 | + <foreach name="list" id="vo"> | ||
52 | + <tr> | ||
53 | + <td>{$vo.id}</td> | ||
54 | + <td>{$vo.out_trade_no}</td> | ||
55 | + <td>{$vo.gname}</td> | ||
56 | + <td>{$vo.uid|id_name}</td> | ||
57 | + <td>{$vo.uid|id_mobile}</td> | ||
58 | + <td>{$vo.price}</td> | ||
59 | + <td>{$vo.true_price/100}</td> | ||
60 | + <td>{$vo.create_time|date="Y-m-d H:i:s",###}</td> | ||
61 | + <td>{$vo.status|pay_type_name}</td> | ||
62 | + <td> | ||
63 | + <a href='{:url("admin/user/student",array("id"=>$vo["uid"]))}'>查看学员详情</a> | ||
64 | + </td> | ||
65 | + </tr> | ||
66 | + </foreach> | ||
67 | + </tbody> | ||
68 | + </table> | ||
69 | + | ||
70 | + | ||
71 | + </div> | ||
72 | + <div class="pagination"> | ||
73 | + {$page} | ||
74 | + </div> | ||
75 | + <script src="__STATIC__/js/admin.js"></script> | ||
76 | +</body> | ||
77 | +</html> |
1 | +<php> | ||
2 | + function _parse_plugin_config($pluginConfig){ | ||
3 | + | ||
4 | +</php> | ||
5 | + | ||
6 | +<foreach name="pluginConfig" item="form"> | ||
7 | + <switch name="form.type"> | ||
8 | + <case value="explain"> | ||
9 | + <div class="form-group"> | ||
10 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
11 | + {$form.title|default=''} | ||
12 | + <notempty name="form.rule.require"> | ||
13 | + <span class="form-required">*</span> | ||
14 | + </notempty> | ||
15 | + </label> | ||
16 | + <div class="col-md-6 col-sm-10"> | ||
17 | + <p>{$form.value}</p> | ||
18 | + <present name="form.tip"> | ||
19 | + <p class="help-block">{$form.tip}</p> | ||
20 | + </present> | ||
21 | + </div> | ||
22 | + </div> | ||
23 | + </case> | ||
24 | + <case value="text"> | ||
25 | + <div class="form-group"> | ||
26 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
27 | + {$form.title|default=''} | ||
28 | + <notempty name="form.rule.require"> | ||
29 | + <span class="form-required">*</span> | ||
30 | + </notempty> | ||
31 | + </label> | ||
32 | + <div class="col-md-6 col-sm-10"> | ||
33 | + <input type="text" name="config[{$key}]" class="form-control" {$form.disabled?'disabled':''} value="{$form.value}" id="{$key}"> | ||
34 | + <present name="form.tip"> | ||
35 | + <p class="help-block">{$form.tip}</p> | ||
36 | + </present> | ||
37 | + </div> | ||
38 | + </div> | ||
39 | + </case> | ||
40 | + <case value="password"> | ||
41 | + <div class="form-group"> | ||
42 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
43 | + {$form.title|default=''} | ||
44 | + <notempty name="form.rule.require"> | ||
45 | + <span class="form-required">*</span> | ||
46 | + </notempty> | ||
47 | + </label> | ||
48 | + <div class="col-md-6 col-sm-10"> | ||
49 | + <input type="password" name="config[{$key}]" class="form-control" value="{$form.value}" | ||
50 | + id="{$key}"> | ||
51 | + <present name="form.tip"> | ||
52 | + <p class="help-block">{$form.tip}</p> | ||
53 | + </present> | ||
54 | + </div> | ||
55 | + </div> | ||
56 | + </case> | ||
57 | + <case value="number"> | ||
58 | + <div class="form-group"> | ||
59 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
60 | + {$form.title|default=''} | ||
61 | + <notempty name="form.rule.require"> | ||
62 | + <span class="form-required">*</span> | ||
63 | + </notempty> | ||
64 | + </label> | ||
65 | + <div class="col-md-6 col-sm-10"> | ||
66 | + <input type="number" name="config[{$key}]" class="form-control" {$form.disabled?'disabled':''} value="{$form.value}" | ||
67 | + id="{$key}"> | ||
68 | + <present name="form.tip"> | ||
69 | + <p class="help-block">{$form.tip}</p> | ||
70 | + </present> | ||
71 | + </div> | ||
72 | + </div> | ||
73 | + </case> | ||
74 | + <case value="hidden"> | ||
75 | + <input type="hidden" name="config[{$key}]" value="{$form.value}"> | ||
76 | + </case> | ||
77 | + <case value="radio"> | ||
78 | + <div class="form-group"> | ||
79 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
80 | + {$form.title|default=''} | ||
81 | + <notempty name="form.rule.require"> | ||
82 | + <span class="form-required">*</span> | ||
83 | + </notempty> | ||
84 | + </label> | ||
85 | + <div class="col-md-6 col-sm-10"> | ||
86 | + <foreach name="form.options" item="opt" key="opt_k"> | ||
87 | + <label class="radio-inline"> | ||
88 | + <php>$radio_checked=$opt_k==$form['value']?"checked":"";</php> | ||
89 | + <input type="radio" name="config[{$key}]" value="{$opt_k}" {$radio_checked}>{$opt} | ||
90 | + </label> | ||
91 | + </foreach> | ||
92 | + <present name="form.tip"> | ||
93 | + <p class="help-block">{$form.tip}</p> | ||
94 | + </present> | ||
95 | + </div> | ||
96 | + </div> | ||
97 | + </case> | ||
98 | + <case value="checkbox"> | ||
99 | + <div class="form-group"> | ||
100 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
101 | + {$form.title|default=''} | ||
102 | + <notempty name="form.rule.require"> | ||
103 | + <span class="form-required">*</span> | ||
104 | + </notempty> | ||
105 | + </label> | ||
106 | + <div class="col-md-6 col-sm-10"> | ||
107 | + <foreach name="form.options" item="opt" key="opt_k"> | ||
108 | + <label class="checkbox-inline"> | ||
109 | + <php> | ||
110 | + is_null($form["value"]) && $form["value"] = array(); | ||
111 | + </php> | ||
112 | + <input type="checkbox" name="config[{$key}][]" value="{$opt_k}" | ||
113 | + <in name="opt_k" value="$form.value"> checked</in> | ||
114 | + >{$opt} | ||
115 | + </label> | ||
116 | + </foreach> | ||
117 | + <present name="form.tip"> | ||
118 | + <p class="help-block">{$form.tip}</p> | ||
119 | + </present> | ||
120 | + </div> | ||
121 | + </div> | ||
122 | + </case> | ||
123 | + <case value="select"> | ||
124 | + <div class="form-group"> | ||
125 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
126 | + {$form.title|default=''} | ||
127 | + <notempty name="form.rule.require"> | ||
128 | + <span class="form-required">*</span> | ||
129 | + </notempty> | ||
130 | + </label> | ||
131 | + <div class="col-md-6 col-sm-10"> | ||
132 | + <select class="form-control" name="config[{$key}]" id="{$key}"> | ||
133 | + <foreach name="form.options" item="opt" key="opt_k"> | ||
134 | + <option value="{$opt_k}" | ||
135 | + <eq name="form.value" value="$opt_k"> selected</eq> | ||
136 | + >{$opt}</option> | ||
137 | + </foreach> | ||
138 | + </select> | ||
139 | + <present name="form.tip"> | ||
140 | + <p class="help-block">{$form.tip}</p> | ||
141 | + </present> | ||
142 | + </div> | ||
143 | + </div> | ||
144 | + </case> | ||
145 | + <case value="textarea"> | ||
146 | + <div class="form-group"> | ||
147 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
148 | + {$form.title|default=''} | ||
149 | + <notempty name="form.rule.require"> | ||
150 | + <span class="form-required">*</span> | ||
151 | + </notempty> | ||
152 | + </label> | ||
153 | + <div class="col-md-6 col-sm-10"> | ||
154 | + <textarea class="form-control" name="config[{$key}]" {$form.disabled?'disabled':''} id="{$key}">{$form.value}</textarea> | ||
155 | + <present name="form.tip"> | ||
156 | + <p class="help-block">{$form.tip}</p> | ||
157 | + </present> | ||
158 | + </div> | ||
159 | + </div> | ||
160 | + </case> | ||
161 | + <case value="group"> | ||
162 | + <div> | ||
163 | + <ul class="nav nav-tabs" role="tablist"> | ||
164 | + <foreach name="form.options" item="groupItem" key="groupKey" index="groupIndex"> | ||
165 | + <li role="presentation" class="{$groupIndex==1?'active':''}"> | ||
166 | + <a href="#tab-{$groupKey}" role="tab" data-toggle="tab" aria-controls="home" | ||
167 | + aria-expanded="true">{$groupItem.title|default=''}</a> | ||
168 | + </li> | ||
169 | + </foreach> | ||
170 | + </ul> | ||
171 | + <div class="tab-content margin-top-20"> | ||
172 | + <foreach name="form.options" item="groupItem" key="groupKey" index="groupIndex"> | ||
173 | + <div role="tabpanel" class="tab-pane fade in {$groupIndex==1?'active':''}" id="tab-{$groupKey}" | ||
174 | + aria-labelledby="home-tab"> | ||
175 | + {:_parse_plugin_config($groupItem.options)} | ||
176 | + </div> | ||
177 | + </foreach> | ||
178 | + </div> | ||
179 | + </div> | ||
180 | + </case> | ||
181 | + <case value="date"> | ||
182 | + <div class="form-group"> | ||
183 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
184 | + {$form.title|default=''} | ||
185 | + <notempty name="form.rule.require"> | ||
186 | + <span class="form-required">*</span> | ||
187 | + </notempty> | ||
188 | + </label> | ||
189 | + <div class="col-md-6 col-sm-10"> | ||
190 | + <input class="form-control js-bootstrap-date" name="config[{$key}]" id="{$key}" | ||
191 | + value="{$form.value}"> | ||
192 | + <present name="form.tip"> | ||
193 | + <p class="help-block">{$form.tip}</p> | ||
194 | + </present> | ||
195 | + </div> | ||
196 | + </div> | ||
197 | + </case> | ||
198 | + <case value="datetime"> | ||
199 | + <div class="form-group"> | ||
200 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
201 | + {$form.title|default=''} | ||
202 | + <notempty name="form.rule.require"> | ||
203 | + <span class="form-required">*</span> | ||
204 | + </notempty> | ||
205 | + </label> | ||
206 | + <div class="col-md-6 col-sm-10"> | ||
207 | + <input class="form-control js-bootstrap-datetime" name="config[{$key}]" id="{$key}" | ||
208 | + value="{$form.value}"> | ||
209 | + <present name="form.tip"> | ||
210 | + <p class="help-block">{$form.tip}</p> | ||
211 | + </present> | ||
212 | + </div> | ||
213 | + </div> | ||
214 | + </case> | ||
215 | + <case value="color"> | ||
216 | + <div class="form-group"> | ||
217 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
218 | + {$form.title|default=''} | ||
219 | + <notempty name="form.rule.require"> | ||
220 | + <span class="form-required">*</span> | ||
221 | + </notempty> | ||
222 | + </label> | ||
223 | + <div class="col-md-6 col-sm-10"> | ||
224 | + <input class="form-control js-color" name="config[{$key}]" id="{$key}" | ||
225 | + value="{$form.value}"> | ||
226 | + <present name="form.tip"> | ||
227 | + <p class="help-block">{$form.tip}</p> | ||
228 | + </present> | ||
229 | + </div> | ||
230 | + </div> | ||
231 | + </case> | ||
232 | + <case value="image"> | ||
233 | + <div class="form-group"> | ||
234 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
235 | + {$form.title|default=''} | ||
236 | + <notempty name="form.rule.require"> | ||
237 | + <span class="form-required">*</span> | ||
238 | + </notempty> | ||
239 | + </label> | ||
240 | + <div class="col-md-6 col-sm-10"> | ||
241 | + <input type="hidden" name="config[{$key}]" class="form-control" | ||
242 | + value="{$form.value}" id="js-{$key}-input"> | ||
243 | + <div> | ||
244 | + <a href="javascript:uploadOneImage('图片上传','#js-{$key}-input');"> | ||
245 | + <if condition="empty($form['value'])"> | ||
246 | + <img src="__TMPL__/public/assets/images/default-thumbnail.png" | ||
247 | + id="js-{$key}-input-preview" | ||
248 | + width="135" style="cursor: pointer"/> | ||
249 | + <else/> | ||
250 | + <img src="{:cmf_get_image_preview_url($form['value'])}" | ||
251 | + id="js-{$key}-input-preview" | ||
252 | + width="135" style="cursor: pointer"/> | ||
253 | + </if> | ||
254 | + </a> | ||
255 | + </div> | ||
256 | + <present name="form.tip"> | ||
257 | + <p class="help-block">{$form.tip}</p> | ||
258 | + </present> | ||
259 | + </div> | ||
260 | + </div> | ||
261 | + </case> | ||
262 | + <case value="file"> | ||
263 | + <div class="form-group"> | ||
264 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
265 | + {$form.title|default=''} | ||
266 | + <notempty name="form.rule.require"> | ||
267 | + <span class="form-required">*</span> | ||
268 | + </notempty> | ||
269 | + </label> | ||
270 | + <div class="col-md-6 col-sm-10"> | ||
271 | + <div> | ||
272 | + <input class="form-control" id="js-{$key}-input" type="text" name="config[{$key}]" value="{$form['value']}" | ||
273 | + style="width: 300px;display: inline-block;" title="文件名称"> | ||
274 | + <a href="javascript:uploadOne('文件上传','#js-{$key}-input','file');">上传文件</a> | ||
275 | + </div> | ||
276 | + <present name="form.tip"> | ||
277 | + <p class="help-block">{$form.tip}</p> | ||
278 | + </present> | ||
279 | + </div> | ||
280 | + </div> | ||
281 | + </case> | ||
282 | + <case value="location"> | ||
283 | + <div class="form-group"> | ||
284 | + <label class="col-sm-2 control-label" for="{$key}"> | ||
285 | + {$form.title|default=''} | ||
286 | + <notempty name="form.rule.require"> | ||
287 | + <span class="form-required">*</span> | ||
288 | + </notempty> | ||
289 | + </label> | ||
290 | + <div class="col-md-6 col-sm-10"> | ||
291 | + <input class="form-control" name="config[{$key}]" id="{$key}" value="{$form.value}" | ||
292 | + onclick="doSelectLocation(this)" | ||
293 | + data-title="请选择{$form.title|default=''}"> | ||
294 | + <present name="form.tip"> | ||
295 | + <p class="help-block">{$form.tip}</p> | ||
296 | + </present> | ||
297 | + </div> | ||
298 | + </div> | ||
299 | + </case> | ||
300 | + </switch> | ||
301 | +</foreach> | ||
302 | + | ||
303 | + | ||
304 | +<php> | ||
305 | + } | ||
306 | +</php> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a href="{:url('plugin/index')}">{:lang('ADMIN_PLUGIN_INDEX')}</a></li> | ||
7 | + <li><a href="http://www.thinkcmf.com/appstore/plugin.html" target="_blank">插件市场</a></li> | ||
8 | + <li> | ||
9 | + <a href="http://www.thinkcmf.com/faq.html?url=https://www.kancloud.cn/thinkcmf/faq/493510" target="_blank">插件安装<i class="fa fa-question-circle"></i></a> | ||
10 | + </li> | ||
11 | + <li><a href="http://www.thinkcmf.com/topic/index/index/cat/9.html" target="_blank">插件交流</a></li> | ||
12 | + <li><a href="https://www.kancloud.cn/thinkcmf/doc/266542" target="_blank">插件文档</a></li> | ||
13 | + </ul> | ||
14 | + <form method="post" class="js-ajax-form margin-top-20"> | ||
15 | + <php> | ||
16 | + $status=array("1"=>'开启',"0"=>'禁用',"3"=>'未安装'); | ||
17 | + </php> | ||
18 | + <table class="table table-hover table-bordered"> | ||
19 | + <thead> | ||
20 | + <tr> | ||
21 | + <th>插件名称</th> | ||
22 | + <th>插件标识</th> | ||
23 | + <th>描述</th> | ||
24 | + <th>作者</th> | ||
25 | + <th width="60">状态</th> | ||
26 | + <th width="210">操作</th> | ||
27 | + </tr> | ||
28 | + </thead> | ||
29 | + <tbody> | ||
30 | + <foreach name="plugins" item="vo"> | ||
31 | + <tr> | ||
32 | + <td>{$vo.title}</td> | ||
33 | + <td>{$vo.name}</td> | ||
34 | + <td>{$vo.description}</td> | ||
35 | + <td>{$vo.author}</td> | ||
36 | + <td>{$status[$vo['status']]}</td> | ||
37 | + <td> | ||
38 | + <if condition="$vo['status']==3"> | ||
39 | + <a href="{:url('plugin/install',array('name'=>$vo['name']))}" class="js-ajax-dialog-btn" | ||
40 | + data-msg="确定安装该插件吗?">安装</a> | ||
41 | + <else/> | ||
42 | + <php>$config=json_decode($vo['config'],true);</php> | ||
43 | + <if condition="!empty($config)"> | ||
44 | + <empty name="config.custom_config"> | ||
45 | + <a href="{:url('plugin/setting',array('id'=>$vo['id']))}">设置</a> | ||
46 | + <else/> | ||
47 | + <a href="{:cmf_plugin_url($vo['name'].'://AdminIndex/setting')}">设置</a> | ||
48 | + </empty> | ||
49 | + <else/> | ||
50 | + <a href="javascript:;" style="color: #ccc;">设置</a> | ||
51 | + </if> | ||
52 | + | ||
53 | + <if condition="!empty($vo['has_admin'])"> | ||
54 | + <a href="javascript:parent.openapp('{:cmf_plugin_url($vo['name'].'://AdminIndex/index')}','plugin_{$vo.name}','{$vo.title}')">管理</a> | ||
55 | + <else/> | ||
56 | + <a href="javascript:;" style="color: #ccc;">管理</a> | ||
57 | + </if> | ||
58 | + | ||
59 | + <a href="{:url('plugin/update',array('name'=>$vo['name']))}" class="js-ajax-dialog-btn" | ||
60 | + data-msg="确定更新该插件吗?">更新</a> | ||
61 | + | ||
62 | + <if condition="$vo['status']==0"> | ||
63 | + <a href="{:url('plugin/toggle',array('id'=>$vo['id'],'enable'=>1))}" | ||
64 | + class="js-ajax-dialog-btn" data-msg="确定启用该插件吗?">启用</a> | ||
65 | + <else/> | ||
66 | + <a href="{:url('plugin/toggle',array('id'=>$vo['id'],'disable'=>1))}" | ||
67 | + class="js-ajax-dialog-btn" data-msg="确定禁用该插件吗?">禁用</a> | ||
68 | + </if> | ||
69 | + | ||
70 | + <a href="{:url('plugin/uninstall',array('id'=>$vo['id']))}" class="js-ajax-dialog-btn" | ||
71 | + data-msg="确定卸载该插件吗?">卸载</a> | ||
72 | + </if> | ||
73 | + </td> | ||
74 | + </tr> | ||
75 | + </foreach> | ||
76 | + </tbody> | ||
77 | + </table> | ||
78 | + </form> | ||
79 | +</div> | ||
80 | +<script src="__STATIC__/js/admin.js"></script> | ||
81 | +</body> | ||
82 | +</html> |
1 | +<include file="plugin/functions"/> | ||
2 | +<include file="public@header"/> | ||
3 | +</head> | ||
4 | +<body> | ||
5 | +<div class="wrap"> | ||
6 | + <ul class="nav nav-tabs"> | ||
7 | + <li><a href="{:url('plugin/index')}">{:lang('ADMIN_PLUGIN_INDEX')}</a></li> | ||
8 | + <li class="active"><a>{:lang('ADMIN_PLUGIN_SETTING')}</a></li> | ||
9 | + </ul> | ||
10 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" action="{:url('plugin/settingPost')}"> | ||
11 | + <empty name="custom_config"> | ||
12 | + {:_parse_plugin_config($data['config'])} | ||
13 | + <else/> | ||
14 | + <present name="custom_config"> | ||
15 | + {$custom_config} | ||
16 | + </present> | ||
17 | + </empty> | ||
18 | + <div class="form-group"> | ||
19 | + <div class="col-sm-offset-2 col-sm-10"> | ||
20 | + <input type="hidden" name="id" value="{$id}" readonly> | ||
21 | + <button type="submit" class="btn btn-primary js-ajax-submit" data-refresh="0">保存</button> | ||
22 | + <a class="btn btn-default" href="javascript:history.back(-1);">返回</a> | ||
23 | + </div> | ||
24 | + </div> | ||
25 | + </form> | ||
26 | +</div> | ||
27 | +<script src="__STATIC__/js/admin.js"></script> | ||
28 | +<script> | ||
29 | + | ||
30 | + Wind.use('colorpicker',function(){ | ||
31 | + $('.js-color').each(function () { | ||
32 | + var $this=$(this); | ||
33 | + $this.ColorPicker({ | ||
34 | + livePreview:true, | ||
35 | + onChange: function(hsb, hex, rgb) { | ||
36 | + $this.val('#'+hex); | ||
37 | + }, | ||
38 | + onBeforeShow: function () { | ||
39 | + $(this).ColorPickerSetColor(this.value); | ||
40 | + } | ||
41 | + }); | ||
42 | + }); | ||
43 | + | ||
44 | + }); | ||
45 | + | ||
46 | + function doSelectLocation(obj) { | ||
47 | + var $obj = $(obj); | ||
48 | + var title = $obj.data('title'); | ||
49 | + var $realInput = $obj; | ||
50 | + var location = $realInput.val(); | ||
51 | + | ||
52 | + parent.openIframeLayer( | ||
53 | + "{:url('dialog/map')}?location=" + location, | ||
54 | + title, | ||
55 | + { | ||
56 | + area: ['700px', '90%'], | ||
57 | + btn: ['确定', '取消'], | ||
58 | + yes: function (index, layero) { | ||
59 | + var iframeWin = parent.window[layero.find('iframe')[0]['name']]; | ||
60 | + var location = iframeWin.confirm(); | ||
61 | + $realInput.val(location.lng + ',' + location.lat); | ||
62 | + //$obj.val(location.address); | ||
63 | + parent.layer.close(index); //如果设定了yes回调,需进行手工关闭 | ||
64 | + } | ||
65 | + } | ||
66 | + ); | ||
67 | + } | ||
68 | +</script> | ||
69 | +</body> | ||
70 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +<style type="text/css"> | ||
3 | + .pic-list li { | ||
4 | + margin-bottom: 5px; | ||
5 | + } | ||
6 | +</style> | ||
7 | + | ||
8 | +</head> | ||
9 | +<body> | ||
10 | +<div class="wrap js-check-wrap"> | ||
11 | + <ul class="nav nav-tabs"> | ||
12 | + <li><a href="{:url('index')}">文章管理</a></li> | ||
13 | + <li class="active"><a href="{:url('add')}">添加文章</a></li> | ||
14 | + </ul> | ||
15 | + <form action="{:url('add_do')}" method="post" class="form-horizontal js-ajax-form margin-top-20"> | ||
16 | + <div class="row"> | ||
17 | + <div class="col-md-9"> | ||
18 | + <table class="table table-bordered"> | ||
19 | + | ||
20 | + <tr> | ||
21 | + <th>标题<span class="form-required">*</span></th> | ||
22 | + <td> | ||
23 | + <input class="form-control" type="text" name="post[post_title]" id="post_title" value="" | ||
24 | + placeholder="请输入标题"> | ||
25 | + </td> | ||
26 | + </tr> | ||
27 | + <tr> | ||
28 | + <th>作者<span class="form-required">*</span></th> | ||
29 | + <td> | ||
30 | + <input class="form-control" type="text" name="post[post_keywords]" id="post_keywords" value="" | ||
31 | + placeholder="请输入作者"> | ||
32 | + </td> | ||
33 | + </tr> | ||
34 | + <tr> | ||
35 | + <th>时间<span class="form-required">*</span></th> | ||
36 | + <td> | ||
37 | + <input class="form-control" type="text" name="" value="<?php echo date('Y-m-d H:i:s')?>" disabled="disabled"> | ||
38 | + </td> | ||
39 | + </tr> | ||
40 | + <tr> | ||
41 | + <th>缩略图</th> | ||
42 | + <td> | ||
43 | + <div style="text-align: center;"> | ||
44 | + <input type="hidden" name="post[thumbnail]" id="thumbnail" value=""> | ||
45 | + <a href="javascript:uploadOneImage('图片上传','#thumbnail');"> | ||
46 | + <img src="__TMPL__/public/assets/images/default-thumbnail.png" | ||
47 | + id="thumbnail-preview" | ||
48 | + width="135" style="cursor: pointer"/> | ||
49 | + </a> | ||
50 | + <!--<input type="button" class="btn btn-sm btn-cancel-thumbnail" value="取消图片">--> | ||
51 | + </div> | ||
52 | + </td> | ||
53 | + </tr> | ||
54 | + <tr> | ||
55 | + <th>banner</th> | ||
56 | + <td> | ||
57 | + <div style="text-align: center;"> | ||
58 | + <input type="hidden" name="post[banner]" id="thumbnail1" value=""> | ||
59 | + <a href="javascript:uploadOneImage('图片上传','#thumbnail1');"> | ||
60 | + <img src="__TMPL__/public/assets/images/default-thumbnail.png" | ||
61 | + id="thumbnail1-preview" | ||
62 | + width="135" style="cursor: pointer"/> | ||
63 | + </a> | ||
64 | + <!--<input type="button" class="btn btn-sm btn-cancel-thumbnail" value="取消图片">--> | ||
65 | + </div> | ||
66 | + </td> | ||
67 | + </tr> | ||
68 | + <tr> | ||
69 | + <th>摘要</th> | ||
70 | + <td> | ||
71 | + <textarea class="form-control" name="post[post_excerpt]" style="height: 50px;" | ||
72 | + placeholder="请填写摘要"></textarea> | ||
73 | + </td> | ||
74 | + </tr> | ||
75 | + <tr> | ||
76 | + <th>内容</th> | ||
77 | + <td> | ||
78 | + <script type="text/plain" id="content" name="post[post_content]"></script> | ||
79 | + </td> | ||
80 | + </tr> | ||
81 | + </table> | ||
82 | + <div class="form-group"> | ||
83 | + <div class="col-sm-offset-2 col-sm-10"> | ||
84 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang('ADD')}</button> | ||
85 | + <a class="btn btn-default" href="{:url('AdminArticle/index')}">{:lang('BACK')}</a> | ||
86 | + </div> | ||
87 | + </div> | ||
88 | + </div> | ||
89 | + </div> | ||
90 | + </form> | ||
91 | +</div> | ||
92 | +<script type="text/javascript" src="__STATIC__/js/admin.js"></script> | ||
93 | +<script type="text/javascript"> | ||
94 | + //编辑器路径定义 | ||
95 | + var editorURL = GV.WEB_ROOT; | ||
96 | +</script> | ||
97 | +<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.config.js"></script> | ||
98 | +<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.all.min.js"></script> | ||
99 | +<script type="text/javascript"> | ||
100 | + $(function () { | ||
101 | + | ||
102 | + editorcontent = new baidu.editor.ui.Editor(); | ||
103 | + editorcontent.render('content'); | ||
104 | + try { | ||
105 | + editorcontent.sync(); | ||
106 | + } catch (err) { | ||
107 | + } | ||
108 | + | ||
109 | + $('.btn-cancel-thumbnail').click(function () { | ||
110 | + $('#thumbnail-preview').attr('src', '__TMPL__/public/assets/images/default-thumbnail.png'); | ||
111 | + $('#thumbnail').val(''); | ||
112 | + }); | ||
113 | + | ||
114 | + }); | ||
115 | + | ||
116 | + function doSelectCategory() { | ||
117 | + var selectedCategoriesId = $('#js-categories-id-input').val(); | ||
118 | + openIframeLayer("{:url('AdminCategory/select')}?ids=" + selectedCategoriesId, '请选择分类', { | ||
119 | + area: ['700px', '400px'], | ||
120 | + btn: ['确定', '取消'], | ||
121 | + yes: function (index, layero) { | ||
122 | + //do something | ||
123 | + | ||
124 | + var iframeWin = window[layero.find('iframe')[0]['name']]; | ||
125 | + var selectedCategories = iframeWin.confirm(); | ||
126 | + if (selectedCategories.selectedCategoriesId.length == 0) { | ||
127 | + layer.msg('请选择分类'); | ||
128 | + return; | ||
129 | + } | ||
130 | + $('#js-categories-id-input').val(selectedCategories.selectedCategoriesId.join(',')); | ||
131 | + $('#js-categories-name-input').val(selectedCategories.selectedCategoriesName.join(' ')); | ||
132 | + //console.log(layer.getFrameIndex(index)); | ||
133 | + layer.close(index); //如果设定了yes回调,需进行手工关闭 | ||
134 | + } | ||
135 | + }); | ||
136 | + } | ||
137 | +</script> | ||
138 | +</body> | ||
139 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +<style type="text/css"> | ||
3 | + .pic-list li { | ||
4 | + margin-bottom: 5px; | ||
5 | + } | ||
6 | +</style> | ||
7 | + | ||
8 | +</head> | ||
9 | +<body> | ||
10 | +<div class="wrap js-check-wrap"> | ||
11 | + <ul class="nav nav-tabs"> | ||
12 | + <li><a href="{:url('index')}">文章管理</a></li> | ||
13 | + <li class="active"><a href="{:url('add')}">添加文章</a></li> | ||
14 | + </ul> | ||
15 | + <form action="{:url('edit_do')}" method="post" class="form-horizontal js-ajax-form margin-top-20"> | ||
16 | + <div class="row"> | ||
17 | + <div class="col-md-9"> | ||
18 | + <table class="table table-bordered"> | ||
19 | + <input type="hidden" name="post[id]" value="{$info.id}"> | ||
20 | + <tr> | ||
21 | + <th>标题<span class="form-required">*</span></th> | ||
22 | + <td> | ||
23 | + <input class="form-control" type="text" name="post[post_title]" id="post_title" value="{$info.post_title}" | ||
24 | + placeholder="请输入标题"> | ||
25 | + </td> | ||
26 | + </tr> | ||
27 | + <tr> | ||
28 | + <th>作者<span class="form-required">*</span></th> | ||
29 | + <td> | ||
30 | + <input class="form-control" type="text" name="post[post_keywords]" id="post_keywords" value="{$info.post_keywords}" | ||
31 | + placeholder="请输入作者"> | ||
32 | + </td> | ||
33 | + </tr> | ||
34 | + <tr> | ||
35 | + <th>时间<span class="form-required">*</span></th> | ||
36 | + <td> | ||
37 | + <input class="form-control" type="text" name="" value="<?php echo date('Y-m-d H:i:s')?>" disabled="disabled"> | ||
38 | + </td> | ||
39 | + </tr> | ||
40 | + <tr> | ||
41 | + <th>缩略图</th> | ||
42 | + <td> | ||
43 | + <div style="text-align: center;"> | ||
44 | + <input type="hidden" name="post[thumbnail]" id="thumbnail" value="{$info.thumbnail}"> | ||
45 | + <a href="javascript:uploadOneImage('图片上传','#thumbnail');"> | ||
46 | + <img src="/upload/{$info.thumbnail}" | ||
47 | + id="thumbnail-preview" | ||
48 | + width="135" style="cursor: pointer"/> | ||
49 | + </a> | ||
50 | + <!--<input type="button" class="btn btn-sm btn-cancel-thumbnail" value="取消图片">--> | ||
51 | + </div> | ||
52 | + </td> | ||
53 | + </tr> | ||
54 | + <tr> | ||
55 | + <th>banner</th> | ||
56 | + <td> | ||
57 | + <div style="text-align: center;"> | ||
58 | + <input type="hidden" name="post[banner]" id="thumbnail1" value="{$info.banner}"> | ||
59 | + <a href="javascript:uploadOneImage('图片上传','#thumbnail1');"> | ||
60 | + <img src="/upload/{$info.banner}" | ||
61 | + id="thumbnail1-preview" | ||
62 | + width="135" style="cursor: pointer"/> | ||
63 | + </a> | ||
64 | + <!--<input type="button" class="btn btn-sm btn-cancel-thumbnail" value="取消图片">--> | ||
65 | + </div> | ||
66 | + </td> | ||
67 | + </tr> | ||
68 | + <tr> | ||
69 | + <th>摘要</th> | ||
70 | + <td> | ||
71 | + <textarea class="form-control" name="post[post_excerpt]" style="height: 50px;" | ||
72 | + placeholder="请填写摘要">{$info.post_excerpt}</textarea> | ||
73 | + </td> | ||
74 | + </tr> | ||
75 | + <tr> | ||
76 | + <th>内容</th> | ||
77 | + <td> | ||
78 | + <script type="text/plain" id="content" name="post[post_content]">{$info.post_content|htmlspecialchars_decode}</script> | ||
79 | + </td> | ||
80 | + </tr> | ||
81 | + </table> | ||
82 | + <div class="form-group"> | ||
83 | + <div class="col-sm-offset-2 col-sm-10"> | ||
84 | + <button type="submit" class="btn btn-primary js-ajax-submit">保存</button> | ||
85 | + <a class="btn btn-default" href="{:url('index')}">{:lang('BACK')}</a> | ||
86 | + </div> | ||
87 | + </div> | ||
88 | + </div> | ||
89 | + </div> | ||
90 | + </form> | ||
91 | +</div> | ||
92 | +<script type="text/javascript" src="__STATIC__/js/admin.js"></script> | ||
93 | +<script type="text/javascript"> | ||
94 | + //编辑器路径定义 | ||
95 | + var editorURL = GV.WEB_ROOT; | ||
96 | +</script> | ||
97 | +<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.config.js"></script> | ||
98 | +<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.all.min.js"></script> | ||
99 | +<script type="text/javascript"> | ||
100 | + $(function () { | ||
101 | + | ||
102 | + editorcontent = new baidu.editor.ui.Editor(); | ||
103 | + editorcontent.render('content'); | ||
104 | + try { | ||
105 | + editorcontent.sync(); | ||
106 | + } catch (err) { | ||
107 | + } | ||
108 | + | ||
109 | + $('.btn-cancel-thumbnail').click(function () { | ||
110 | + $('#thumbnail-preview').attr('src', '__TMPL__/public/assets/images/default-thumbnail.png'); | ||
111 | + $('#thumbnail').val(''); | ||
112 | + }); | ||
113 | + | ||
114 | + }); | ||
115 | + | ||
116 | + function doSelectCategory() { | ||
117 | + var selectedCategoriesId = $('#js-categories-id-input').val(); | ||
118 | + openIframeLayer("{:url('AdminCategory/select')}?ids=" + selectedCategoriesId, '请选择分类', { | ||
119 | + area: ['700px', '400px'], | ||
120 | + btn: ['确定', '取消'], | ||
121 | + yes: function (index, layero) { | ||
122 | + //do something | ||
123 | + | ||
124 | + var iframeWin = window[layero.find('iframe')[0]['name']]; | ||
125 | + var selectedCategories = iframeWin.confirm(); | ||
126 | + if (selectedCategories.selectedCategoriesId.length == 0) { | ||
127 | + layer.msg('请选择分类'); | ||
128 | + return; | ||
129 | + } | ||
130 | + $('#js-categories-id-input').val(selectedCategories.selectedCategoriesId.join(',')); | ||
131 | + $('#js-categories-name-input').val(selectedCategories.selectedCategoriesName.join(' ')); | ||
132 | + //console.log(layer.getFrameIndex(index)); | ||
133 | + layer.close(index); //如果设定了yes回调,需进行手工关闭 | ||
134 | + } | ||
135 | + }); | ||
136 | + } | ||
137 | +</script> | ||
138 | +</body> | ||
139 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +<style type="text/css"> | ||
3 | + .pic-list li { | ||
4 | + margin-bottom: 5px; | ||
5 | + } | ||
6 | +</style> | ||
7 | + | ||
8 | +</head> | ||
9 | +<body> | ||
10 | +<div class="wrap js-check-wrap"> | ||
11 | + <ul class="nav nav-tabs"> | ||
12 | + <li><a href="{:url('index1')}">文章管理</a></li> | ||
13 | + </ul> | ||
14 | + <form action="{:url('edit_do1')}" method="post" class="form-horizontal js-ajax-form margin-top-20"> | ||
15 | + <div class="row"> | ||
16 | + <div class="col-md-9"> | ||
17 | + <table class="table table-bordered"> | ||
18 | + <input type="hidden" name="post[id]" value="{$info.id}"> | ||
19 | + <tr> | ||
20 | + <th>标题<span class="form-required">*</span></th> | ||
21 | + <td> | ||
22 | + <input class="form-control" type="text" name="post[post_title]" id="post_title" value="{$info.post_title}" | ||
23 | + placeholder="请输入标题"> | ||
24 | + </td> | ||
25 | + </tr> | ||
26 | + <tr> | ||
27 | + <th>内容</th> | ||
28 | + <td> | ||
29 | + <script type="text/plain" id="content" name="post[post_content]">{$info.post_content|htmlspecialchars_decode}</script> | ||
30 | + </td> | ||
31 | + </tr> | ||
32 | + </table> | ||
33 | + <div class="form-group"> | ||
34 | + <div class="col-sm-offset-2 col-sm-10"> | ||
35 | + <button type="submit" class="btn btn-primary js-ajax-submit">保存</button> | ||
36 | + <a class="btn btn-default" href="{:url('index')}">{:lang('BACK')}</a> | ||
37 | + </div> | ||
38 | + </div> | ||
39 | + </div> | ||
40 | + </div> | ||
41 | + </form> | ||
42 | +</div> | ||
43 | +<script type="text/javascript" src="__STATIC__/js/admin.js"></script> | ||
44 | +<script type="text/javascript"> | ||
45 | + //编辑器路径定义 | ||
46 | + var editorURL = GV.WEB_ROOT; | ||
47 | +</script> | ||
48 | +<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.config.js"></script> | ||
49 | +<script type="text/javascript" src="__STATIC__/js/ueditor/ueditor.all.min.js"></script> | ||
50 | +<script type="text/javascript"> | ||
51 | + $(function () { | ||
52 | + | ||
53 | + editorcontent = new baidu.editor.ui.Editor(); | ||
54 | + editorcontent.render('content'); | ||
55 | + try { | ||
56 | + editorcontent.sync(); | ||
57 | + } catch (err) { | ||
58 | + } | ||
59 | + | ||
60 | + $('.btn-cancel-thumbnail').click(function () { | ||
61 | + $('#thumbnail-preview').attr('src', '__TMPL__/public/assets/images/default-thumbnail.png'); | ||
62 | + $('#thumbnail').val(''); | ||
63 | + }); | ||
64 | + | ||
65 | + }); | ||
66 | + | ||
67 | + function doSelectCategory() { | ||
68 | + var selectedCategoriesId = $('#js-categories-id-input').val(); | ||
69 | + openIframeLayer("{:url('AdminCategory/select')}?ids=" + selectedCategoriesId, '请选择分类', { | ||
70 | + area: ['700px', '400px'], | ||
71 | + btn: ['确定', '取消'], | ||
72 | + yes: function (index, layero) { | ||
73 | + //do something | ||
74 | + | ||
75 | + var iframeWin = window[layero.find('iframe')[0]['name']]; | ||
76 | + var selectedCategories = iframeWin.confirm(); | ||
77 | + if (selectedCategories.selectedCategoriesId.length == 0) { | ||
78 | + layer.msg('请选择分类'); | ||
79 | + return; | ||
80 | + } | ||
81 | + $('#js-categories-id-input').val(selectedCategories.selectedCategoriesId.join(',')); | ||
82 | + $('#js-categories-name-input').val(selectedCategories.selectedCategoriesName.join(' ')); | ||
83 | + //console.log(layer.getFrameIndex(index)); | ||
84 | + layer.close(index); //如果设定了yes回调,需进行手工关闭 | ||
85 | + } | ||
86 | + }); | ||
87 | + } | ||
88 | +</script> | ||
89 | +</body> | ||
90 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +<link rel="stylesheet" href="/static/scr/zoomify/bootstrap-grid.min.css"> | ||
3 | +<link rel="stylesheet" href="/static/scr/zoomify/dist/zoomify.css"> | ||
4 | +</head> | ||
5 | +<body> | ||
6 | +<div class="wrap js-check-wrap"> | ||
7 | + | ||
8 | + <ul class="nav nav-tabs"> | ||
9 | + <li class="active"><a href="javascript:;">所有文章</a></li> | ||
10 | + <li><a href="{:url('add')}">添加文章</a></li> | ||
11 | + </ul> | ||
12 | + <form class="well form-inline margin-top-20" method="post" action="{:url('index')}"> | ||
13 | + | ||
14 | + 标题: | ||
15 | + <input type="text" class="form-control" name="keyword" style="width: 200px;" | ||
16 | + value="{$keyword|default=''}" placeholder="请输入关键字..."> | ||
17 | + <input type="submit" class="btn btn-primary" value="搜索"/> | ||
18 | + <a class="btn btn-danger" href="{:url('AdminArticle/index')}">清空</a> | ||
19 | + </form> | ||
20 | + <form class="js-ajax-form" action="" method="post"> | ||
21 | + <!--<div class="table-actions">--> | ||
22 | + | ||
23 | + <!--<button class="btn btn-primary btn-sm js-ajax-submit" type="submit"--> | ||
24 | + <!--data-action="{:url('AdminArticle/top',array('yes'=>1))}" data-subcheck="true">置顶--> | ||
25 | + <!--</button>--> | ||
26 | + <!--<button class="btn btn-primary btn-sm js-ajax-submit" type="submit"--> | ||
27 | + <!--data-action="{:url('AdminArticle/top',array('no'=>1))}" data-subcheck="true">取消置顶--> | ||
28 | + <!--</button>--> | ||
29 | + <!--<button class="btn btn-danger btn-sm js-ajax-submit" type="submit"--> | ||
30 | + <!--data-action="{:url('AdminArticle/delete')}" data-subcheck="true" data-msg="您确定删除吗?">--> | ||
31 | + <!--{:lang('DELETE')}--> | ||
32 | + <!--</button>--> | ||
33 | + <!--</div>--> | ||
34 | + <table class="table table-hover table-bordered table-list"> | ||
35 | + <thead> | ||
36 | + <tr> | ||
37 | + <th width="50">ID</th> | ||
38 | + <th width="300">标题</th> | ||
39 | + <th width="120">简介</th> | ||
40 | + <th width="50">提交时间</th> | ||
41 | + <th width="120">操作</th> | ||
42 | + </tr> | ||
43 | + </thead> | ||
44 | + <foreach name="list" item="vo"> | ||
45 | + <tr> | ||
46 | + <td><b>{$vo.id}</b></td> | ||
47 | + <td>{$vo.post_title}</td> | ||
48 | + <td>{$vo.post_excerpt}</td> | ||
49 | + <td> | ||
50 | + <notempty name="vo.create_time"> | ||
51 | + {:date('Y-m-d H:i',$vo['create_time'])} | ||
52 | + </notempty> | ||
53 | + | ||
54 | + </td> | ||
55 | + <td> | ||
56 | + <a href="{:url('edit',array('id'=>$vo['id']))}">查看/编辑</a> | ||
57 | + <a href="{:url('delete',array('id'=>$vo['id']))}" class="js-ajax-delete">{:lang('DELETE')}</a> | ||
58 | + </td> | ||
59 | + </tr> | ||
60 | + </foreach> | ||
61 | + | ||
62 | + </table> | ||
63 | + | ||
64 | + <ul class="pagination">{$page|default=''}</ul> | ||
65 | + </form> | ||
66 | +</div> | ||
67 | +<script src="__STATIC__/js/admin.js"></script> | ||
68 | +<script> | ||
69 | + | ||
70 | + function reloadPage(win) { | ||
71 | + win.location.reload(); | ||
72 | + } | ||
73 | + | ||
74 | + $(function () { | ||
75 | + setCookie("refersh_time", 0); | ||
76 | + Wind.use('ajaxForm', 'artDialog', 'iframeTools', function () { | ||
77 | + //批量复制 | ||
78 | + $('.js-articles-copy').click(function (e) { | ||
79 | + var ids = []; | ||
80 | + $("input[name='ids[]']").each(function () { | ||
81 | + if ($(this).is(':checked')) { | ||
82 | + ids.push($(this).val()); | ||
83 | + } | ||
84 | + }); | ||
85 | + | ||
86 | + if (ids.length == 0) { | ||
87 | + art.dialog.through({ | ||
88 | + id: 'error', | ||
89 | + icon: 'error', | ||
90 | + content: '您没有勾选信息,无法进行操作!', | ||
91 | + cancelVal: '关闭', | ||
92 | + cancel: true | ||
93 | + }); | ||
94 | + return false; | ||
95 | + } | ||
96 | + | ||
97 | + ids = ids.join(','); | ||
98 | + art.dialog.open("__ROOT__/index.php?g=portal&m=AdminArticle&a=copy&ids=" + ids, { | ||
99 | + title: "批量复制", | ||
100 | + width: "300px" | ||
101 | + }); | ||
102 | + }); | ||
103 | + //批量移动 | ||
104 | + $('.js-articles-move').click(function (e) { | ||
105 | + var ids = []; | ||
106 | + $("input[name='ids[]']").each(function () { | ||
107 | + if ($(this).is(':checked')) { | ||
108 | + ids.push($(this).val()); | ||
109 | + } | ||
110 | + }); | ||
111 | + | ||
112 | + if (ids.length == 0) { | ||
113 | + art.dialog.through({ | ||
114 | + id: 'error', | ||
115 | + icon: 'error', | ||
116 | + content: '您没有勾选信息,无法进行操作!', | ||
117 | + cancelVal: '关闭', | ||
118 | + cancel: true | ||
119 | + }); | ||
120 | + return false; | ||
121 | + } | ||
122 | + | ||
123 | + ids = ids.join(','); | ||
124 | + art.dialog.open("__ROOT__/index.php?g=portal&m=AdminArticle&a=move&old_term_id={$term.term_id|default=0}&ids=" + ids, { | ||
125 | + title: "批量移动", | ||
126 | + width: "300px" | ||
127 | + }); | ||
128 | + }); | ||
129 | + }); | ||
130 | + }); | ||
131 | +</script> | ||
132 | +<script src="http://www.jq22.com/jquery/1.11.1/jquery.min.js"></script> | ||
133 | +<script src="/static/src/zoomify/zoomify.js"></script> | ||
134 | +<script type="text/javascript"> | ||
135 | + $('.example img').zoomify(); | ||
136 | +</script> | ||
137 | +</body> | ||
138 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +<link rel="stylesheet" href="/static/scr/zoomify/bootstrap-grid.min.css"> | ||
3 | +<link rel="stylesheet" href="/static/scr/zoomify/dist/zoomify.css"> | ||
4 | +</head> | ||
5 | +<body> | ||
6 | +<div class="wrap js-check-wrap"> | ||
7 | + | ||
8 | + <ul class="nav nav-tabs"> | ||
9 | + <li class="active"><a href="javascript:;">所有文章</a></li> | ||
10 | + <!--<li><a href="{:url('add')}">添加文章</a></li>--> | ||
11 | + </ul> | ||
12 | + <form class="well form-inline margin-top-20" method="post" action="{:url('index')}"> | ||
13 | + | ||
14 | + 标题: | ||
15 | + <input type="text" class="form-control" name="keyword" style="width: 200px;" | ||
16 | + value="{$keyword|default=''}" placeholder="请输入关键字..."> | ||
17 | + <input type="submit" class="btn btn-primary" value="搜索"/> | ||
18 | + <a class="btn btn-danger" href="{:url('AdminArticle/index')}">清空</a> | ||
19 | + </form> | ||
20 | + <form class="js-ajax-form" action="" method="post"> | ||
21 | + <!--<div class="table-actions">--> | ||
22 | + | ||
23 | + <!--<button class="btn btn-primary btn-sm js-ajax-submit" type="submit"--> | ||
24 | + <!--data-action="{:url('AdminArticle/top',array('yes'=>1))}" data-subcheck="true">置顶--> | ||
25 | + <!--</button>--> | ||
26 | + <!--<button class="btn btn-primary btn-sm js-ajax-submit" type="submit"--> | ||
27 | + <!--data-action="{:url('AdminArticle/top',array('no'=>1))}" data-subcheck="true">取消置顶--> | ||
28 | + <!--</button>--> | ||
29 | + <!--<button class="btn btn-danger btn-sm js-ajax-submit" type="submit"--> | ||
30 | + <!--data-action="{:url('AdminArticle/delete')}" data-subcheck="true" data-msg="您确定删除吗?">--> | ||
31 | + <!--{:lang('DELETE')}--> | ||
32 | + <!--</button>--> | ||
33 | + <!--</div>--> | ||
34 | + <table class="table table-hover table-bordered table-list"> | ||
35 | + <thead> | ||
36 | + <tr> | ||
37 | + <th width="50">ID</th> | ||
38 | + <th width="300">标题</th> | ||
39 | + <th width="50">提交时间</th> | ||
40 | + <th width="120">操作</th> | ||
41 | + </tr> | ||
42 | + </thead> | ||
43 | + <foreach name="list" item="vo"> | ||
44 | + <tr> | ||
45 | + <td><b>{$vo.id}</b></td> | ||
46 | + <td>{$vo.post_title}</td> | ||
47 | + <td> | ||
48 | + <notempty name="vo.create_time"> | ||
49 | + {:date('Y-m-d H:i',$vo['create_time'])} | ||
50 | + </notempty> | ||
51 | + | ||
52 | + </td> | ||
53 | + <td> | ||
54 | + <a href="{:url('edit2',array('id'=>$vo['id']))}">查看/编辑</a> | ||
55 | + </td> | ||
56 | + </tr> | ||
57 | + </foreach> | ||
58 | + | ||
59 | + </table> | ||
60 | + | ||
61 | + <ul class="pagination">{$page|default=''}</ul> | ||
62 | + </form> | ||
63 | +</div> | ||
64 | +<script src="__STATIC__/js/admin.js"></script> | ||
65 | +<script> | ||
66 | + | ||
67 | + function reloadPage(win) { | ||
68 | + win.location.reload(); | ||
69 | + } | ||
70 | + | ||
71 | + $(function () { | ||
72 | + setCookie("refersh_time", 0); | ||
73 | + Wind.use('ajaxForm', 'artDialog', 'iframeTools', function () { | ||
74 | + //批量复制 | ||
75 | + $('.js-articles-copy').click(function (e) { | ||
76 | + var ids = []; | ||
77 | + $("input[name='ids[]']").each(function () { | ||
78 | + if ($(this).is(':checked')) { | ||
79 | + ids.push($(this).val()); | ||
80 | + } | ||
81 | + }); | ||
82 | + | ||
83 | + if (ids.length == 0) { | ||
84 | + art.dialog.through({ | ||
85 | + id: 'error', | ||
86 | + icon: 'error', | ||
87 | + content: '您没有勾选信息,无法进行操作!', | ||
88 | + cancelVal: '关闭', | ||
89 | + cancel: true | ||
90 | + }); | ||
91 | + return false; | ||
92 | + } | ||
93 | + | ||
94 | + ids = ids.join(','); | ||
95 | + art.dialog.open("__ROOT__/index.php?g=portal&m=AdminArticle&a=copy&ids=" + ids, { | ||
96 | + title: "批量复制", | ||
97 | + width: "300px" | ||
98 | + }); | ||
99 | + }); | ||
100 | + //批量移动 | ||
101 | + $('.js-articles-move').click(function (e) { | ||
102 | + var ids = []; | ||
103 | + $("input[name='ids[]']").each(function () { | ||
104 | + if ($(this).is(':checked')) { | ||
105 | + ids.push($(this).val()); | ||
106 | + } | ||
107 | + }); | ||
108 | + | ||
109 | + if (ids.length == 0) { | ||
110 | + art.dialog.through({ | ||
111 | + id: 'error', | ||
112 | + icon: 'error', | ||
113 | + content: '您没有勾选信息,无法进行操作!', | ||
114 | + cancelVal: '关闭', | ||
115 | + cancel: true | ||
116 | + }); | ||
117 | + return false; | ||
118 | + } | ||
119 | + | ||
120 | + ids = ids.join(','); | ||
121 | + art.dialog.open("__ROOT__/index.php?g=portal&m=AdminArticle&a=move&old_term_id={$term.term_id|default=0}&ids=" + ids, { | ||
122 | + title: "批量移动", | ||
123 | + width: "300px" | ||
124 | + }); | ||
125 | + }); | ||
126 | + }); | ||
127 | + }); | ||
128 | +</script> | ||
129 | +<script src="http://www.jq22.com/jquery/1.11.1/jquery.min.js"></script> | ||
130 | +<script src="/static/src/zoomify/zoomify.js"></script> | ||
131 | +<script type="text/javascript"> | ||
132 | + $('.example img').zoomify(); | ||
133 | +</script> | ||
134 | +</body> | ||
135 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +<style>.expander{margin-left: -20px;}</style> | ||
3 | +</head> | ||
4 | +<body> | ||
5 | + <div class="wrap js-check-wrap"> | ||
6 | + <ul class="nav nav-tabs"> | ||
7 | + <li><a href="{:url('rbac/index')}">{:lang('ADMIN_RBAC_INDEX')}</a></li> | ||
8 | + <li><a href="{:url('rbac/roleAdd')}">{:lang('ADMIN_RBAC_ROLEADD')}</a></li> | ||
9 | + <li class="active"><a href="javascript:;">{:lang('ADMIN_RBAC_AUTHORIZE')}</a></li> | ||
10 | + </ul> | ||
11 | + <form class="js-ajax-form margin-top-20" action="{:url('rbac/authorizePost')}" method="post"> | ||
12 | + <div class="table_full"> | ||
13 | + <table class="table table-bordered" id="authrule-tree"> | ||
14 | + <tbody> | ||
15 | + {$category} | ||
16 | + </tbody> | ||
17 | + </table> | ||
18 | + </div> | ||
19 | + <div class="form-actions"> | ||
20 | + <input type="hidden" name="roleId" value="{$roleId}" /> | ||
21 | + <button class="btn btn-primary js-ajax-submit" type="submit">{:lang('SAVE')}</button> | ||
22 | + <a class="btn btn-default" href="{:url('admin/rbac/index')}">{:lang('BACK')}</a> | ||
23 | + </div> | ||
24 | + </form> | ||
25 | + </div> | ||
26 | + <script src="__STATIC__/js/admin.js"></script> | ||
27 | + <script type="text/javascript"> | ||
28 | + $(document).ready(function () { | ||
29 | + Wind.css('treeTable'); | ||
30 | + Wind.use('treeTable', function () { | ||
31 | + $("#authrule-tree").treeTable({ | ||
32 | + indent: 20 | ||
33 | + }); | ||
34 | + }); | ||
35 | + }); | ||
36 | + | ||
37 | + function checknode(obj) { | ||
38 | + var chk = $("input[type='checkbox']"); | ||
39 | + var count = chk.length; | ||
40 | + | ||
41 | + var num = chk.index(obj); | ||
42 | + var level_top = level_bottom = chk.eq(num).attr('level'); | ||
43 | + for (var i = num; i >= 0; i--) { | ||
44 | + var le = chk.eq(i).attr('level'); | ||
45 | + if (le <level_top) { | ||
46 | + chk.eq(i).prop("checked", true); | ||
47 | + var level_top = level_top - 1; | ||
48 | + } | ||
49 | + } | ||
50 | + for (var j = num + 1; j < count; j++) { | ||
51 | + var le = chk.eq(j).attr('level'); | ||
52 | + if (chk.eq(num).prop("checked")) { | ||
53 | + | ||
54 | + if (le > level_bottom){ | ||
55 | + chk.eq(j).prop("checked", true); | ||
56 | + } | ||
57 | + else if (le == level_bottom){ | ||
58 | + break; | ||
59 | + } | ||
60 | + } else { | ||
61 | + if (le >level_bottom){ | ||
62 | + chk.eq(j).prop("checked", false); | ||
63 | + }else if(le == level_bottom){ | ||
64 | + break; | ||
65 | + } | ||
66 | + } | ||
67 | + } | ||
68 | + } | ||
69 | + </script> | ||
70 | +</body> | ||
71 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | + <div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a href="{:url('rbac/index')}">{:lang('ADMIN_RBAC_INDEX')}</a></li> | ||
7 | + <li><a href="{:url('rbac/roleAdd')}">{:lang('ADMIN_RBAC_ROLEADD')}</a></li> | ||
8 | + </ul> | ||
9 | + <form action="{:url('Rbac/listorders')}" method="post" class="margin-top-20"> | ||
10 | + <table class="table table-hover table-bordered"> | ||
11 | + <thead> | ||
12 | + <tr> | ||
13 | + <th width="40">ID</th> | ||
14 | + <th align="left">{:lang('ROLE_NAME')}</th> | ||
15 | + <th align="left">{:lang('ROLE_DESCRIPTION')}</th> | ||
16 | + <th width="60" align="left">{:lang('STATUS')}</th> | ||
17 | + <th width="160">{:lang('ACTIONS')}</th> | ||
18 | + </tr> | ||
19 | + </thead> | ||
20 | + <tbody> | ||
21 | + <foreach name="roles" item="vo"> | ||
22 | + <tr> | ||
23 | + <td>{$vo.id}</td> | ||
24 | + <td>{$vo.name}</td> | ||
25 | + <td>{$vo.remark}</td> | ||
26 | + <td> | ||
27 | + <if condition="$vo['status'] eq 1"> | ||
28 | + <font color="red">√</font> | ||
29 | + <else /> | ||
30 | + <font color="red">╳</font> | ||
31 | + </if> | ||
32 | + </td> | ||
33 | + <td> | ||
34 | + <if condition="$vo['id'] eq 1"> | ||
35 | + <font color="#cccccc">{:lang('ROLE_SETTING')}</font> <!-- <a href="javascript:openIframeDialog('{:url('rbac/member',array('id'=>$vo['id']))}','成员管理');">成员管理</a> | --> | ||
36 | + <font color="#cccccc">{:lang('EDIT')}</font> <font color="#cccccc">{:lang('DELETE')}</font> | ||
37 | + <else /> | ||
38 | + <a href="{:url('Rbac/authorize',array('id'=>$vo['id']))}">{:lang('ROLE_SETTING')}</a> | ||
39 | + <!-- <a href="javascript:openIframeDialog('{:url('rbac/member',array('id'=>$vo['id']))}','成员管理');">成员管理</a>| --> | ||
40 | + <a href="{:url('Rbac/roleedit',array('id'=>$vo['id']))}">{:lang('EDIT')}</a> | ||
41 | + <a class="js-ajax-delete" href="{:url('Rbac/roledelete',array('id'=>$vo['id']))}">{:lang('DELETE')}</a> | ||
42 | + </if> | ||
43 | + </td> | ||
44 | + </tr> | ||
45 | + </foreach> | ||
46 | + </tbody> | ||
47 | + </table> | ||
48 | + </form> | ||
49 | + </div> | ||
50 | + <script src="__STATIC__/js/admin.js"></script> | ||
51 | +</body> | ||
52 | +</html> |
1 | +<admintpl file="header" /> | ||
2 | +</head> | ||
3 | +<body style="min-width: 600px;"> | ||
4 | + <div class="wrap"> | ||
5 | + <form method="post" class="js-ajax-form"> | ||
6 | + <table class="table table-hover"> | ||
7 | + <thead> | ||
8 | + <tr> | ||
9 | + <th align="center">ID</th> | ||
10 | + <th>用户名</th> | ||
11 | + <th>昵称</th> | ||
12 | + <th>E-mail</th> | ||
13 | + <th>角色名称</th> | ||
14 | + <th align='center'>操作</th> | ||
15 | + </tr> | ||
16 | + </thead> | ||
17 | + <tbody> | ||
18 | + <foreach name="lists" item="vo"> | ||
19 | + <tr> | ||
20 | + <td align="center">{$vo.id}</td> | ||
21 | + <td>{$vo.user_login}</td> | ||
22 | + <td>{$vo.user_nickname}</td> | ||
23 | + <td>{$vo.user_email}</td> | ||
24 | + <!-- <td>{:date('Y-m-d H:i:s', $vo['create_time'])}</td> --> | ||
25 | + <td>{$vo.name}</td> | ||
26 | + <td align="center"> | ||
27 | + <a href="{:U('user/delete',array('id'=>$vo['id']))}" class="js-ajax-delete">删除</a> | ||
28 | + </td> | ||
29 | + </tr> | ||
30 | + </foreach> | ||
31 | + </tbody> | ||
32 | + </table> | ||
33 | + </form> | ||
34 | + </div> | ||
35 | + <script src="__STATIC__/js/admin.js"></script> | ||
36 | +</body> | ||
37 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('rbac/index')}">{:lang('ADMIN_RBAC_INDEX')}</a></li> | ||
7 | + <li class="active"><a href="{:url('rbac/roleadd')}">{:lang('ADMIN_RBAC_ROLEADD')}</a></li> | ||
8 | + </ul> | ||
9 | + <form class="form-horizontal js-ajax-form margin-top-20" action="{:url('rbac/roleAddPost')}" method="post"> | ||
10 | + <div class="form-group"> | ||
11 | + <label for="input-name" class="col-sm-2 control-label"><span class="form-required">*</span>{:lang('ROLE_NAME')}</label> | ||
12 | + <div class="col-md-6 col-sm-10"> | ||
13 | + <input type="text" class="form-control" id="input-name" name="name"> | ||
14 | + </div> | ||
15 | + </div> | ||
16 | + <div class="form-group"> | ||
17 | + <label for="input-remark" class="col-sm-2 control-label">{:lang('ROLE_DESCRIPTION')}</label> | ||
18 | + <div class="col-md-6 col-sm-10"> | ||
19 | + <textarea type="text" class="form-control" id="input-remark" name="remark"></textarea> | ||
20 | + </div> | ||
21 | + </div> | ||
22 | + <div class="form-group"> | ||
23 | + <label class="col-sm-2 control-label">{:lang('STATUS')}</label> | ||
24 | + <div class="col-md-6 col-sm-10"> | ||
25 | + <label class="radio-inline"> | ||
26 | + <input type="radio" name="status" value="1"> {:lang('ENABLED')} | ||
27 | + </label> | ||
28 | + <label class="radio-inline"> | ||
29 | + <input type="radio" name="status" value="0"> {:lang('DISABLED')} | ||
30 | + </label> | ||
31 | + </div> | ||
32 | + </div> | ||
33 | + <div class="form-group"> | ||
34 | + <div class="col-sm-offset-2 col-sm-10"> | ||
35 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang('ADD')}</button> | ||
36 | + </div> | ||
37 | + </div> | ||
38 | + </form> | ||
39 | +</div> | ||
40 | +<script src="__STATIC__/js/admin.js"></script> | ||
41 | +</body> | ||
42 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('rbac/index')}">{:lang('ADMIN_RBAC_INDEX')}</a></li> | ||
7 | + <li><a href="{:url('rbac/roleadd')}">{:lang('ADMIN_RBAC_ROLEADD')}</a></li> | ||
8 | + <li class="active"><a>编辑角色</a></li> | ||
9 | + </ul> | ||
10 | + <form class="form-horizontal js-ajax-form margin-top-20" action="{:url('rbac/roleeditpost')}" method="post"> | ||
11 | + <div class="form-group"> | ||
12 | + <label for="input-name" class="col-sm-2 control-label"><span class="form-required">*</span>{:lang('ROLE_NAME')}</label> | ||
13 | + <div class="col-md-6 col-sm-10"> | ||
14 | + <input type="text" class="form-control" id="input-name" name="name" value="{$data.name}"> | ||
15 | + </div> | ||
16 | + </div> | ||
17 | + <div class="form-group"> | ||
18 | + <label for="input-remark" class="col-sm-2 control-label">{:lang('ROLE_DESCRIPTION')}</label> | ||
19 | + <div class="col-md-6 col-sm-10"> | ||
20 | + <textarea type="text" class="form-control" id="input-remark" name="remark">{$data.remark}</textarea> | ||
21 | + </div> | ||
22 | + </div> | ||
23 | + <div class="form-group"> | ||
24 | + <label class="col-sm-2 control-label">{:lang('STATUS')}</label> | ||
25 | + <div class="col-md-6 col-sm-10"> | ||
26 | + <label class="radio-inline"> | ||
27 | + <php>$active_true_checked=($data['status']==1)?"checked":"";</php> | ||
28 | + <input type="radio" name="status" value="1" {$active_true_checked}> {:lang('ENABLED')} | ||
29 | + </label> | ||
30 | + <label class="radio-inline"> | ||
31 | + <php>$active_false_checked=($data['status']==0)?"checked":"";</php> | ||
32 | + <input type="radio" name="status" value="0" {$active_false_checked}> {:lang('DISABLED')} | ||
33 | + </label> | ||
34 | + </div> | ||
35 | + </div> | ||
36 | + <div class="form-group"> | ||
37 | + <div class="col-sm-offset-2 col-sm-10"> | ||
38 | + <input type="hidden" name="id" value="{$data.id}"/> | ||
39 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang('SAVE')}</button> | ||
40 | + <a class="btn btn-default" href="{:url('admin/rbac/index')}">{:lang('BACK')}</a> | ||
41 | + </div> | ||
42 | + </div> | ||
43 | + </form> | ||
44 | +</div> | ||
45 | +<script src="__STATIC__/js/admin.js"></script> | ||
46 | +</body> | ||
47 | +</html> |
1 | +<include file="public@header" /> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a href="javascript:void(0)">回收站列表</a></li> | ||
7 | + </ul> | ||
8 | + <table class="table table-hover table-bordered margin-top-20"> | ||
9 | + <thead> | ||
10 | + <tr> | ||
11 | + <th width="50">ID</th> | ||
12 | + <th>内容名称</th> | ||
13 | + <th>内容类型</th> | ||
14 | + <th>删除时间</th> | ||
15 | + <th>操作人</th> | ||
16 | + <th width="130">{:lang('ACTIONS')}</th> | ||
17 | + </tr> | ||
18 | + </thead> | ||
19 | + <tbody> | ||
20 | + <foreach name="list" item="vo"> | ||
21 | + <tr> | ||
22 | + <td>{$vo.id}</td> | ||
23 | + <td>{$vo.name}</td> | ||
24 | + <td> | ||
25 | + {:lang('TABLE_'.strtoupper($vo['table_name']))} | ||
26 | + </td> | ||
27 | + <td> {:date('Y-m-d H:i:s',$vo['create_time'])}</td> | ||
28 | + <td> {:$vo.user.user_login}</td> | ||
29 | + <td> | ||
30 | + <a href="{:url('RecycleBin/restore',array('id'=>$vo['id']))}" class="js-ajax-dialog-btn" data-msg="确定要还原吗?">还原</a> | ||
31 | + <a href="{:url('RecycleBin/delete',array('id'=>$vo['id']))}" class="js-ajax-delete">{:lang('DELETE')}</a> | ||
32 | + </td> | ||
33 | + </tr> | ||
34 | + </foreach> | ||
35 | + </tbody> | ||
36 | + </table> | ||
37 | + <div class="pagination">{$page}</div> | ||
38 | +</div> | ||
39 | +<script src="__STATIC__/js/admin.js"></script> | ||
40 | +</body> | ||
41 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('route/index')}">URL美化</a></li> | ||
7 | + <li class="active"><a href="{:url('route/add')}">添加URL规则</a></li> | ||
8 | + </ul> | ||
9 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" action="{:url('route/addPost')}"> | ||
10 | + <div class="form-group"> | ||
11 | + <label for="input-full_url" class="col-sm-2 control-label">原始网址<span class="form-required">*</span></label> | ||
12 | + <div class="col-md-6 col-sm-10"> | ||
13 | + <input type="text" class="form-control" id="input-full_url" name="full_url"> <a href="javascript:doSelectUrl();">选择规则</a> | ||
14 | + </div> | ||
15 | + </div> | ||
16 | + <div class="form-group"> | ||
17 | + <label for="input-url" class="col-sm-2 control-label">显示网址<span class="form-required">*</span></label> | ||
18 | + <div class="col-md-6 col-sm-10"> | ||
19 | + <input type="text" class="form-control" id="input-url" name="url"> | ||
20 | + <p class="help-block"><span id="url-vars"></span> url格式一般为list/:param1/:param2或 list-<param1>-<param2> | ||
21 | + </p> | ||
22 | + </div> | ||
23 | + </div> | ||
24 | + <div class="form-group"> | ||
25 | + <label for="input-status" class="col-sm-2 control-label">是否启用</label> | ||
26 | + <div class="col-md-6 col-sm-10"> | ||
27 | + <select class="form-control" name="status" id="input-status"> | ||
28 | + <option value="1">启用</option> | ||
29 | + <option value="0">禁用</option> | ||
30 | + </select> | ||
31 | + </div> | ||
32 | + </div> | ||
33 | + <div class="form-group"> | ||
34 | + <div class="col-sm-offset-2 col-sm-10"> | ||
35 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang('SAVE')}</button> | ||
36 | + </div> | ||
37 | + </div> | ||
38 | + </form> | ||
39 | +</div> | ||
40 | +<script type="text/javascript" src="__STATIC__/js/admin.js"></script> | ||
41 | + | ||
42 | +<script> | ||
43 | + function doSelectUrl() { | ||
44 | + var selectedCategoriesId = $('#js-categories-id-input').val(); | ||
45 | + openIframeLayer("{:url('Route/select')}?ids=" + selectedCategoriesId, '请选择URL', { | ||
46 | + area: ['95%', '90%'], | ||
47 | + btn: ['确定', '取消'], | ||
48 | + yes: function (index, layero) { | ||
49 | + | ||
50 | + var iframeWin = window[layero.find('iframe')[0]['name']]; | ||
51 | + var selectedUrl = iframeWin.confirm(); | ||
52 | + | ||
53 | + if (selectedUrl) { | ||
54 | + $('#input-full_url').val(selectedUrl.action); | ||
55 | + $('#input-url').val(selectedUrl.url); | ||
56 | + var helpBlock = selectedUrl.vars ? "URL参数有" + selectedUrl.vars + ',' : ''; | ||
57 | + $('#url-vars').text(helpBlock); | ||
58 | + } | ||
59 | + layer.close(index); //如果设定了yes回调,需进行手工关闭 | ||
60 | + } | ||
61 | + }); | ||
62 | + } | ||
63 | +</script> | ||
64 | +</body> | ||
65 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li><a href="{:url('route/index')}">URL美化</a></li> | ||
7 | + <li><a href="{:url('route/add')}">添加URL规则</a></li> | ||
8 | + <li class="active"><a>编辑URL规则</a></li> | ||
9 | + </ul> | ||
10 | + <form method="post" class="form-horizontal js-ajax-form margin-top-20" action="{:url('route/editPost')}"> | ||
11 | + <div class="form-group"> | ||
12 | + <label for="input-full_url" class="col-sm-2 control-label">原始网址<span class="form-required">*</span></label> | ||
13 | + <div class="col-md-6 col-sm-10"> | ||
14 | + <input type="text" class="form-control" id="input-full_url" name="full_url" value="{$full_url}"> | ||
15 | + </div> | ||
16 | + </div> | ||
17 | + <div class="form-group"> | ||
18 | + <label for="input-url" class="col-sm-2 control-label">显示网址<span class="form-required">*</span></label> | ||
19 | + <div class="col-md-6 col-sm-10"> | ||
20 | + <input type="text" class="form-control" id="input-url" name="url" value="{$url}"> | ||
21 | + <p class="help-block"><span id="url-vars"></span> url格式一般为list/:param1/:param2或 list-<param1>-<param2> | ||
22 | + </p> | ||
23 | + </div> | ||
24 | + </div> | ||
25 | + <div class="form-group"> | ||
26 | + <label for="input-status" class="col-sm-2 control-label">是否启用</label> | ||
27 | + <div class="col-md-6 col-sm-10"> | ||
28 | + <select class="form-control" name="status" id="input-status"> | ||
29 | + <option value="1">启用</option> | ||
30 | + <php>$status_selected=$status?"":"selected";</php> | ||
31 | + <option value="0" {$status_selected}>禁用</option> | ||
32 | + </select> | ||
33 | + </div> | ||
34 | + </div> | ||
35 | + <div class="form-group"> | ||
36 | + <div class="col-sm-offset-2 col-sm-10"> | ||
37 | + <input type="hidden" name="id" value="{$id}"> | ||
38 | + <button type="submit" class="btn btn-primary js-ajax-submit">{:lang('SAVE')}</button> | ||
39 | + <a class="btn btn-default" href="{:url('Route/index')}">返回</a> | ||
40 | + </div> | ||
41 | + </div> | ||
42 | + </form> | ||
43 | +</div> | ||
44 | +<script type="text/javascript" src="__STATIC__/js/admin.js"></script> | ||
45 | +</body> | ||
46 | +</html> |
1 | +<include file="public@header"/> | ||
2 | +</head> | ||
3 | +<body> | ||
4 | +<div class="wrap js-check-wrap"> | ||
5 | + <ul class="nav nav-tabs"> | ||
6 | + <li class="active"><a href="{:url('route/index')}">URL美化</a></li> | ||
7 | + <li><a href="{:url('route/add')}">添加URL规则</a></li> | ||
8 | + </ul> | ||
9 | + <form class="js-ajax-form" action="{:url('route/listOrder')}" method="post"> | ||
10 | + <div class="table-actions"> | ||
11 | + <button type="submit" class="btn btn-primary btn-sm js-ajax-submit">排序</button> | ||
12 | + </div> | ||
13 | + <table class="table table-hover table-bordered table-list"> | ||
14 | + <thead> | ||
15 | + <tr> | ||
16 | + <th width="50">排序</th> | ||
17 | + <th width="50">ID</th> | ||
18 | + <th>原始网址</th> | ||
19 | + <th>显示网址</th> | ||
20 | + <th>类型</th> | ||
21 | + <th>状态</th> | ||
22 | + <th width="130">操作</th> | ||
23 | + </tr> | ||
24 | + </thead> | ||
25 | + <tbody> | ||
26 | + <php> | ||
27 | + $statuses=array('0'=>"已禁用","1"=>"已启用"); | ||
28 | + $types=array('1'=>"自定义","2"=>"别名定义"); | ||
29 | + </php> | ||
30 | + <foreach name="routes" item="vo"> | ||
31 | + <tr> | ||
32 | + <td> | ||
33 | + <eq name="vo.type" value="2"> | ||
34 | + <input class="input-order" type="text" value="{$vo.list_order}" readonly> | ||
35 | + <else/> | ||
36 | + <input name="list_orders[{$vo.id}]" class="input-order" type="text" | ||
37 | + value="{$vo.list_order}"> | ||
38 | + </eq> | ||
39 | + | ||
40 | + </td> | ||
41 | + <td>{$vo.id}</td> | ||
42 | + <td>{$vo.full_url}</td> | ||
43 | + <td>{$vo.url}</td> | ||
44 | + <td> | ||
45 | + <eq name="vo.type" value="2"> | ||
46 | + <span class="label label-danger" data-toggle="tooltip" title="别名定义规则,无法编辑,排序">{$types[$vo['type']]}</span> | ||
47 | + <else/> | ||
48 | + <span class="label label-success" data-toggle="tooltip" title="自定义规则,可以编辑,排序">{$types[$vo['type']]}</span> | ||
49 | + </eq> | ||
50 | + </td> | ||
51 | + <td>{$statuses[$vo['status']]}</td> | ||
52 | + <td> | ||
53 | + <eq name="vo.type" value="2"> | ||
54 | + 编辑 禁用 删除 | ||
55 | + <else/> | ||
56 | + <a href="{:url('route/edit',array('id'=>$vo['id']))}">编辑</a> | ||
57 | + <eq name="vo.status" value="1"> | ||
58 | + <a href="{:url('route/ban',array('id'=>$vo['id']))}" class="js-ajax-dialog-btn" | ||
59 | + data-msg="确定禁用吗?">禁用</a> | ||
60 | + <else/> | ||
61 | + <a href="{:url('route/open',array('id'=>$vo['id']))}" class="js-ajax-dialog-btn" | ||
62 | + data-msg="确定启用吗?">启用</a> | ||
63 | + </eq> | ||
64 | + <a href="{:url('route/delete',array('id'=>$vo['id']))}" class="js-ajax-delete">删除</a> | ||
65 | + </eq> | ||
66 | + </td> | ||
67 | + </tr> | ||
68 | + </foreach> | ||
69 | + </tbody> | ||
70 | + <tfoot> | ||
71 | + <tr> | ||
72 | + <th width="50">排序</th> | ||
73 | + <th width="50">ID</th> | ||
74 | + <th>原始网址</th> | ||
75 | + <th>显示网址</th> | ||
76 | + <th>类型</th> | ||
77 | + <th>状态</th> | ||
78 | + <th width="130">操作</th> | ||
79 | + </tr> | ||
80 | + </tfoot> | ||
81 | + </table> | ||
82 | + <div class="table-actions"> | ||
83 | + <button type="submit" class="btn btn-primary btn-sm js-ajax-submit">排序</button> | ||
84 | + </div> | ||
85 | + </form> | ||
86 | +</div> | ||
87 | +<script type="text/javascript" src="__STATIC__/js/admin.js"></script> | ||
88 | +</body> | ||
89 | +</html> |
-
请 注册 或 登录 后发表评论