初始化项目:添加后端代码、ThinkPHP框架、前端资源
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
<form id="config-form" class="edit-form form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
{if $addon.tips && $addon.tips.value}
|
||||
<div class="alert {$addon.tips.extend|default='alert-info-light'}" style="margin-bottom:10px;">
|
||||
{if $addon.tips.title}
|
||||
<b>{$addon.tips.title}</b><br>
|
||||
{/if}
|
||||
{$addon.tips.value}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="panel panel-default panel-intro">
|
||||
{if count($groupList)>1}
|
||||
<div class="panel-heading mb-3">
|
||||
<ul class="nav nav-tabs nav-group">
|
||||
<li class="active"><a href="#all" data-toggle="tab">全部</a></li>
|
||||
{foreach name="groupList" id="tab"}
|
||||
<li><a href="#tab-{$key}" title="{$tab}" data-toggle="tab">{$tab}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="panel-body no-padding">
|
||||
<div id="myTabContent" class="tab-content">
|
||||
{foreach name="groupList" id="group" key="groupName"}
|
||||
<div class="tab-pane fade active in" id="tab-{$groupName}">
|
||||
|
||||
<table class="table table-striped table-config mb-0">
|
||||
<tbody>
|
||||
{foreach name="$addon.config" id="item"}
|
||||
{if ((!isset($item['group']) || $item['group']=='') && $groupName=='other') || (isset($item['group']) && $item['group']==$group)}
|
||||
<tr data-favisible="{$item.visible|default=''|htmlentities}" data-name="{$item.name}" class="{if $item.visible??''}hidden{/if}">
|
||||
<td width="15%">{$item.title}</td>
|
||||
<td>
|
||||
<div class="row">
|
||||
<div class="col-sm-8 col-xs-12">
|
||||
{switch $item.type}
|
||||
{case string}
|
||||
<input {$item.extend} type="text" name="row[{$item.name}]" value="{$item.value|htmlentities}" class="form-control" data-rule="{$item.rule}" data-tip="{$item.tip}"/>
|
||||
{/case}
|
||||
{case password}
|
||||
<input {$item.extend} type="password" name="row[{$item.name}]" value="{$item.value|htmlentities}" class="form-control" data-rule="{$item.rule}" data-tip="{$item.tip}"/>
|
||||
{/case}
|
||||
{case text}
|
||||
<textarea {$item.extend} name="row[{$item.name}]" class="form-control" data-rule="{$item.rule}" rows="5" data-tip="{$item.tip}">{$item.value|htmlentities}</textarea>
|
||||
{/case}
|
||||
{case array}
|
||||
<dl class="fieldlist" data-name="row[{$item.name}]">
|
||||
<dd>
|
||||
<ins>{:__('Array key')}</ins>
|
||||
<ins>{:__('Array value')}</ins>
|
||||
</dd>
|
||||
<dd><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></dd>
|
||||
<textarea name="row[{$item.name}]" cols="30" rows="5" class="hide">{$item.value|json_encode|htmlentities}</textarea>
|
||||
</dl>
|
||||
{/case}
|
||||
{case date}
|
||||
<input {$item.extend} type="text" name="row[{$item.name}]" value="{$item.value|htmlentities}" class="form-control datetimepicker" data-date-format="YYYY-MM-DD" data-tip="{$item.tip}" data-rule="{$item.rule}"/>
|
||||
{/case}
|
||||
{case time}
|
||||
<input {$item.extend} type="text" name="row[{$item.name}]" value="{$item.value|htmlentities}" class="form-control datetimepicker" data-date-format="HH:mm:ss" data-tip="{$item.tip}" data-rule="{$item.rule}"/>
|
||||
{/case}
|
||||
{case datetime}
|
||||
<input {$item.extend} type="text" name="row[{$item.name}]" value="{$item.value|htmlentities}" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-tip="{$item.tip}" data-rule="{$item.rule}"/>
|
||||
{/case}
|
||||
{case number}
|
||||
<input {$item.extend} type="number" name="row[{$item.name}]" value="{$item.value|htmlentities}" class="form-control" data-tip="{$item.tip}" data-rule="{$item.rule}"/>
|
||||
{/case}
|
||||
{case checkbox}
|
||||
{foreach name="item.content" item="vo"}
|
||||
<label for="row[{$item.name}][]-{$key}"><input id="row[{$item.name}][]-{$key}" name="row[{$item.name}][]" type="checkbox" value="{$key}" data-tip="{$item.tip}" {in name="key" value="$item.value" }checked{/in} /> {$vo}</label>
|
||||
{/foreach}
|
||||
<span class="msg-box n-right" for="c-{$item.name}"></span>
|
||||
{/case}
|
||||
{case radio}
|
||||
{foreach name="item.content" item="vo"}
|
||||
<label for="row[{$item.name}]-{$key}"><input id="row[{$item.name}]-{$key}" name="row[{$item.name}]" type="radio" value="{$key}" data-tip="{$item.tip}" {in name="key" value="$item.value" }checked{/in} /> {$vo}</label>
|
||||
{/foreach}
|
||||
<span class="msg-box n-right" for="c-{$item.name}"></span>
|
||||
{/case}
|
||||
{case value="select" break="0"}{/case}
|
||||
{case value="selects"}
|
||||
<select {$item.extend} name="row[{$item.name}]{$item.type=='selects'?'[]':''}" class="form-control selectpicker" data-tip="{$item.tip}" {$item.type=='selects'?'multiple':''}>
|
||||
{foreach name="item.content" item="vo"}
|
||||
<option value="{$key}" {in name="key" value="$item.value" }selected{/in}>{$vo}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
{/case}
|
||||
{case value="image" break="0"}{/case}
|
||||
{case value="images"}
|
||||
<div class="form-inline">
|
||||
<input id="c-{$item.name}" class="form-control" size="28" name="row[{$item.name}]" type="text" value="{$item.value|htmlentities}" data-tip="{$item.tip}">
|
||||
<span><button type="button" id="plupload-{$item.name}" class="btn btn-danger plupload" data-input-id="c-{$item.name}" data-mimetype="image/*" data-multiple="{$item.type=='image'?'false':'true'}" data-preview-id="p-{$item.name}"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
|
||||
<span><button type="button" id="fachoose-{$item.name}" class="btn btn-primary fachoose" data-input-id="c-{$item.name}" data-mimetype="image/*" data-multiple="{$item.type=='image'?'false':'true'}"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
|
||||
<ul class="row list-inline plupload-preview" id="p-{$item.name}"></ul>
|
||||
<span class="msg-box n-right" for="c-{$item.name}"></span>
|
||||
</div>
|
||||
{/case}
|
||||
{case value="file" break="0"}{/case}
|
||||
{case value="files"}
|
||||
<div class="form-inline">
|
||||
<input id="c-{$item.name}" class="form-control" size="28" name="row[{$item.name}]" type="text" value="{$item.value|htmlentities}" data-tip="{$item.tip}">
|
||||
<span><button type="button" id="plupload-{$item.name}" class="btn btn-danger plupload" data-input-id="c-{$item.name}" data-multiple="{$item.type=='file'?'false':'true'}"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
|
||||
<span><button type="button" id="fachoose-{$item.name}" class="btn btn-primary fachoose" data-input-id="c-{$item.name}" data-multiple="{$item.type=='file'?'false':'true'}"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
|
||||
<span class="msg-box n-right" for="c-{$item.name}"></span>
|
||||
</div>
|
||||
{/case}
|
||||
{case bool}
|
||||
<label for="row[{$item.name}]-yes"><input id="row[{$item.name}]-yes" name="row[{$item.name}]" type="radio" value="1" {$item.value?'checked':''} data-tip="{$item.tip}" /> {:__('Yes')}</label>
|
||||
<label for="row[{$item.name}]-no"><input id="row[{$item.name}]-no" name="row[{$item.name}]" type="radio" value="0" {$item.value?'':'checked'} data-tip="{$item.tip}" /> {:__('No')}</label>
|
||||
{/case}
|
||||
{default /}{$item.value}
|
||||
{/switch}
|
||||
</div>
|
||||
<div class="col-sm-4"></div>
|
||||
</div>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{/foreach}
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2" style="width:15%;"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -0,0 +1,302 @@
|
||||
<style type="text/css">
|
||||
.layui-layer-pay .layui-layer-content {
|
||||
padding: 0;
|
||||
height: 600px !important;
|
||||
}
|
||||
|
||||
.layui-layer-pay {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.payimg {
|
||||
position: relative;
|
||||
width: 800px;
|
||||
height: 600px;
|
||||
}
|
||||
|
||||
.payimg .alipaycode {
|
||||
position: absolute;
|
||||
left: 265px;
|
||||
top: 442px;
|
||||
}
|
||||
|
||||
.payimg .wechatcode {
|
||||
position: absolute;
|
||||
left: 660px;
|
||||
top: 442px;
|
||||
}
|
||||
|
||||
.thumbnail img {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.fixed-table-toolbar .pull-right.search {
|
||||
min-width: 300px;
|
||||
}
|
||||
|
||||
a.title {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.releasetips {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.releasetips i {
|
||||
display: block;
|
||||
background: #f00;
|
||||
border-radius: 50%;
|
||||
width: 0.3em;
|
||||
height: 0.3em;
|
||||
top: 0px;
|
||||
right: -8px;
|
||||
position: absolute;
|
||||
box-shadow: 0px 0px 2px #f11414;
|
||||
}
|
||||
|
||||
.form-userinfo .breadcrumb {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.btn-toggle {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
</style>
|
||||
<div class="panel panel-default panel-intro">
|
||||
<div class="panel-heading">
|
||||
{:build_heading(null,FALSE)}
|
||||
{if $Think.config.fastadmin.api_url}
|
||||
<ul class="nav nav-tabs nav-category">
|
||||
<li class="active"><a href="javascript:;" data-id="">{:__('All')}</a></li>
|
||||
<li><a href="javascript:;" data-id="0">{:__('Uncategoried')}</a></li>
|
||||
</ul>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="myTabContent" class="tab-content">
|
||||
<div class="tab-pane fade active in" id="one">
|
||||
<div class="widget-body no-padding">
|
||||
<div id="toolbar" class="toolbar">
|
||||
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" data-force-refresh="false"><i class="fa fa-refresh"></i> </a>
|
||||
{if $Think.config.fastadmin.api_url}
|
||||
<button type="button" id="faupload-addon" class="btn btn-danger faupload btn-mini-xs" data-url="addon/local" data-chunking="false" data-mimetype="zip,fastaddon" data-multiple="false"><i class="fa fa-upload"></i>
|
||||
{:__('Local install')}
|
||||
</button>
|
||||
<div class="btn-group">
|
||||
<a href="#" class="btn btn-info btn-switch active btn-mini-xs" data-type="all"><i class="fa fa-list"></i> {:__('All')}</a>
|
||||
<a href="#" class="btn btn-info btn-switch btn-mini-xs" data-type="free"><i class="fa fa-gift"></i> {:__('Free')}</a>
|
||||
<a href="#" class="btn btn-info btn-switch btn-mini-xs" data-type="price"><i class="fa fa-rmb"></i> {:__('Paying')}</a>
|
||||
<a href="#" class="btn btn-info btn-switch btn-mini-xs" data-type="local" data-url="addon/downloaded"><i class="fa fa-laptop"></i> {:__('Local addon')}</a>
|
||||
</div>
|
||||
<a class="btn btn-primary btn-userinfo btn-mini-xs" href="javascript:;"><i class="fa fa-user"></i> {:__('Userinfo')}</a>
|
||||
{/if}
|
||||
</div>
|
||||
<table id="table" class="table table-striped table-bordered table-hover" width="100%">
|
||||
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script id="searchformtpl" type="text/html">
|
||||
<form action="" class="form-commonsearch hide">
|
||||
<div class="well" style="box-shadow:none;border-radius:2px;margin-bottom:10px;">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 col-sm-6 col-md-3">
|
||||
<div class="form-group">
|
||||
<label class="control-label">{:__('Title')}</label>
|
||||
<input class="operate" type="hidden" data-name="title" value="like"/>
|
||||
<input class="form-control" type="text" name="title" placeholder="" value=""/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-3">
|
||||
<div class="form-group">
|
||||
<label class="control-label">{:__('Type')}</label>
|
||||
<input class="operate" type="hidden" data-name="type" value="="/>
|
||||
<input class="form-control" type="text" name="type" placeholder="all" value=""/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-3">
|
||||
<div class="form-group">
|
||||
<label class="control-label">{:__('Category')}</label>
|
||||
<input type="hidden" class="operate" data-name="category_id" value="="/>
|
||||
<input class="form-control" name="category_id" type="text" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-3">
|
||||
<div class="form-group">
|
||||
<label class="control-label">{:__('Version')}</label>
|
||||
<input type="hidden" class="operate" data-name="faversion" value="="/>
|
||||
<input class="form-control" name="faversion" type="text" value="{$Think.config.fastadmin.version}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12 col-sm-6 col-md-3">
|
||||
<div class="form-group">
|
||||
<label class="control-label"></label>
|
||||
<div class="row">
|
||||
<div class="col-xs-6">
|
||||
<input type="submit" class="btn btn-success btn-block" value="{:__('Submit')}"/>
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<input type="reset" class="btn btn-primary btn-block" value="{:__('Reset')}"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</script>
|
||||
<script id="logintpl" type="text/html">
|
||||
<div>
|
||||
<form class="form-horizontal">
|
||||
<fieldset>
|
||||
<div class="alert alert-dismissable alert-danger">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>{:__('Warning')}</strong><br/>{:__('Login tips')}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-12">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon"><i class="fa fa-user"></i></span>
|
||||
<input type="text" class="form-control" id="inputAccount" value=""
|
||||
placeholder="{:__('Your username or email')}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="col-lg-12">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon"><i class="fa fa-lock"></i></span>
|
||||
<input type="password" class="form-control" id="inputPassword" value=""
|
||||
placeholder="{:__('Your password')}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</script>
|
||||
<script id="userinfotpl" type="text/html">
|
||||
<div>
|
||||
<form class="form-horizontal form-userinfo">
|
||||
<fieldset>
|
||||
<div class="alert alert-dismissable alert-info-light">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>{:__('Warning')}</strong><br/>{:__('Logined tips', '<%=username%>')}
|
||||
</div>
|
||||
</fieldset>
|
||||
<div class="breadcrumb"><a href="https://www.fastadmin.net/user/myaddon.html" target="_blank"><i class="fa fa-cube"></i> {:__('My addons')}</a></div>
|
||||
</form>
|
||||
</div>
|
||||
</script>
|
||||
<script id="uninstalltpl" type="text/html">
|
||||
<div class="">
|
||||
<div class=""><%=#__("Are you sure you want to unstall %s?", addon['title'])%>
|
||||
<p class="text-danger">{:__('Delete all the addon file and cannot be recovered!')} </p>
|
||||
{if config('app_debug')}
|
||||
<p class="text-danger"><input type="checkbox" name="droptables" id="droptables" data-name="<%=addon['name']%>"/> {:__('Delete all the addon database and cannot be recovered!')} </p>
|
||||
{/if}
|
||||
<p class="text-danger">{:__('Please backup important data manually before uninstall!')}</p>
|
||||
</div>
|
||||
</div>
|
||||
</script>
|
||||
<script id="conflicttpl" type="text/html">
|
||||
<div class="alert alert-dismissable alert-danger">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
<strong>{:__('Warning')}</strong> {:__('Conflict tips')}
|
||||
</div>
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>{:__('File')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<%for(var i=0;i < conflictlist.length;i++){%>
|
||||
<tr>
|
||||
<th scope="row"><%=i+1%></th>
|
||||
<td><%=conflictlist[i]%></td>
|
||||
</tr>
|
||||
<%}%>
|
||||
</tbody>
|
||||
</table>
|
||||
</script>
|
||||
<!--@formatter:off-->
|
||||
<script id="operatetpl" type="text/html">
|
||||
<% var labelarr = ['primary', 'success', 'info', 'danger', 'warning']; %>
|
||||
<% var label = labelarr[item.id % 5]; %>
|
||||
<% var addon = item.addon; %>
|
||||
|
||||
<span class="operate" data-id="<%=item.id%>" data-name="<%=item.name%>">
|
||||
<% if(!addon){ %>
|
||||
<% if(typeof item.releaselist !="undefined" && item.releaselist.length>1){%>
|
||||
<span class="btn-group">
|
||||
<a href="javascript:;" class="btn btn-xs btn-primary btn-success btn-install"
|
||||
data-type="<%=item.price<=0?'free':'price';%>"
|
||||
data-version="<%=item.version%>"><i class="fa fa-cloud-download"></i> {:__('Install')}</a>
|
||||
<a class="btn btn-xs btn-success dropdown-toggle" data-toggle="dropdown" href="javascript:;">
|
||||
<span class="fa fa-caret-down"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<% for(var j=0;j< item.releaselist.length;j++){ %>
|
||||
<li><a href="javascript:;" class="btn-install" data-type="<%=item.price<=0?'free':'price';%>"
|
||||
data-version="<%=item.releaselist[j].version%>"><%=item.releaselist[j].version%></a></li>
|
||||
<% } %>
|
||||
</ul>
|
||||
</span>
|
||||
<% }else if(typeof item.releaselist !="undefined" && item.releaselist.length>0){%>
|
||||
<a href="javascript:;" class="btn btn-xs btn-primary btn-success btn-install"
|
||||
data-type="<%=item.price<=0?'free':'price';%>"
|
||||
data-version="<%=item.version%>"><i class="fa fa-cloud-download"></i> {:__('Install')}</a>
|
||||
<% } %>
|
||||
|
||||
<% if(item.demourl){ %>
|
||||
<a href="<%=item.demourl%>" class="btn btn-xs btn-primary btn-info btn-demo" target="_blank">
|
||||
<i class="fa fa-flash"></i> {:__('Demo')}
|
||||
</a>
|
||||
<% } %>
|
||||
|
||||
<% if(item.button){ %>
|
||||
<a href="<%=item.url%>" class="btn btn-xs btn-primary btn-info" target="_blank">
|
||||
<%=item.button%>
|
||||
</a>
|
||||
<% } %>
|
||||
<% } else {%>
|
||||
<% if(addon.version!=item.version){%>
|
||||
<% if(typeof item.releaselist !="undefined" && item.releaselist.length>1){%>
|
||||
<span class="btn-group">
|
||||
<a href="javascript:;" class="btn btn-xs btn-info btn-success btn-upgrade"
|
||||
data-version="<%=item.version%>"><i class="fa fa-cloud"></i> {:__('Upgrade')}</a>
|
||||
<a class="btn btn-xs btn-info dropdown-toggle" data-toggle="dropdown"
|
||||
href="javascript:;">
|
||||
<span class="fa fa-caret-down"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<% for(var j=0;j< item.releaselist.length;j++){ %>
|
||||
<li><a href="javascript:;" class="btn-upgrade"
|
||||
data-version="<%=item.releaselist[j].version%>"><%=item.releaselist[j].version%></a></li>
|
||||
<% } %>
|
||||
</ul>
|
||||
</span>
|
||||
<% }else{%>
|
||||
<a href="javascript:;" class="btn btn-xs btn-info btn-upgrade" title="{:__('Upgrade')}" data-version="<%=item.version%>"><i
|
||||
class="fa fa-cloud"></i> {:__('Upgrade')}</a>
|
||||
<% }%>
|
||||
<% }%>
|
||||
<% if(addon.config){ %>
|
||||
<a href="javascript:;" class="btn btn-xs btn-primary btn-config" title="{:__('Setting')}"><i class="fa fa-pencil"></i>
|
||||
{:__('Setting')}</a>
|
||||
<% } %>
|
||||
<a href="javascript:;" class="btn btn-xs btn-danger btn-uninstall" title="{:__('Uninstall')}"><i class="fa fa-times"></i>
|
||||
{:__('Uninstall')}</a>
|
||||
<% } %>
|
||||
</span>
|
||||
</script>
|
||||
<!--@formatter:on-->
|
||||
@@ -0,0 +1,56 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<!-- 加载样式及META信息 -->
|
||||
{include file="common/meta" /}
|
||||
</head>
|
||||
<body class="hold-transition {$Think.config.fastadmin.adminskin|default='skin-black-blue'} sidebar-mini {:$Think.cookie.sidebar_collapse?'sidebar-collapse':''} fixed {:$Think.config.fastadmin.multipletab?'multipletab':''} {:$Think.config.fastadmin.multiplenav?'multiplenav':''}" id="tabs">
|
||||
|
||||
<div class="wrapper">
|
||||
|
||||
<!-- 头部区域 -->
|
||||
<header id="header" class="main-header">
|
||||
{if preg_match('/\/admin\/|\/admin\.php|\/admin_d75KABNWt\.php/i', url(''))}
|
||||
<div class="alert alert-danger-light text-center" style="margin-bottom:0;border:none;">
|
||||
{:__('Security tips')}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
{include file='common/header' /}
|
||||
</header>
|
||||
|
||||
<!-- 左侧菜单栏 -->
|
||||
<aside class="main-sidebar">
|
||||
{include file='common/menu' /}
|
||||
</aside>
|
||||
|
||||
<!-- 主体内容区域 -->
|
||||
<div class="content-wrapper tab-content tab-addtabs">
|
||||
{if $fixedmenu}
|
||||
<div role="tabpanel" class="tab-pane {:$referermenu?'':'active'}" id="con_{$fixedmenu.id}">
|
||||
<iframe src="{$fixedmenu.url}?addtabs=1" width="100%" height="100%" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling-x="no" scrolling-y="auto" allowtransparency="yes"></iframe>
|
||||
</div>
|
||||
{/if}
|
||||
{if $referermenu}
|
||||
<div role="tabpanel" class="tab-pane active" id="con_{$referermenu.id}">
|
||||
<iframe src="{$referermenu.url}?addtabs=1" width="100%" height="100%" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling-x="no" scrolling-y="auto" allowtransparency="yes"></iframe>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<!-- 底部链接,默认隐藏 -->
|
||||
<footer class="main-footer hide">
|
||||
<div class="pull-right hidden-xs">
|
||||
</div>
|
||||
<strong>Copyright © 2017-{:date("Y")} <a href="__PUBLIC__">{$site.name}</a>.</strong> All rights reserved.
|
||||
</footer>
|
||||
|
||||
<!-- 右侧控制栏 -->
|
||||
<div class="control-sidebar-bg"></div>
|
||||
{include file="common/control" /}
|
||||
</div>
|
||||
|
||||
<!-- 加载JS脚本 -->
|
||||
{include file="common/script" /}
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,45 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>控制台</title>
|
||||
<script>
|
||||
var apiServerPath = '{$w.siteroot}';
|
||||
var linkConfig = {
|
||||
c : "{$gpc.c}",
|
||||
a : "{$gpc.a}",
|
||||
w7i : "{$gpc.w7i}",
|
||||
eid : "{$gpc.eid}",
|
||||
version_id : "{$gpc.version_id}"
|
||||
}
|
||||
|
||||
var projectType = 'single';
|
||||
|
||||
var footer = {
|
||||
firend:'{$footer.firend}',
|
||||
copyright:'{$footer.copyright}',
|
||||
};
|
||||
|
||||
var importWarehouseFilePath = "{$w.siteroot}/assets/question_excel_import.xlsx";
|
||||
var importStudentFilePath = "{$w.siteroot}/assets/course_student_import.xlsx";
|
||||
|
||||
var mobilePath = '{$w.siteroot}?i={$w.uniacid}';
|
||||
</script>
|
||||
|
||||
<script src="/assets/vue/assets/lib/aliyun-upload-sdk/lib/es6-promise.min.js"></script>
|
||||
<script src="/assets/vue/assets/lib/aliyun-upload-sdk/lib/aliyun-oss-sdk-6.17.1.min.js"></script>
|
||||
<script src="/assets/vue/assets/lib/aliyun-upload-sdk/aliyun-upload-sdk-1.5.6.min.js"></script>
|
||||
|
||||
<!-- vue start -->
|
||||
<script type="module" crossorigin src="/assets/vue/index.76a66f15.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="/assets/vue/arco.f3c60d68.js">
|
||||
<link rel="modulepreload" crossorigin href="/assets/vue/chart.a626c034.js">
|
||||
<link rel="modulepreload" crossorigin href="/assets/vue/vue.7d1f2b31.js">
|
||||
<link rel="stylesheet" href="/assets/vue/index.34fc9008.css">
|
||||
<!-- vue end -->
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,143 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
{include file="common/meta" /}
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
color: #999;
|
||||
background-color: #f1f4fd;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #444;
|
||||
}
|
||||
|
||||
|
||||
.login-screen {
|
||||
max-width: 430px;
|
||||
padding: 0;
|
||||
margin: 100px auto 0 auto;
|
||||
|
||||
}
|
||||
|
||||
.login-screen .well {
|
||||
border-radius: 3px;
|
||||
-webkit-box-shadow: 0 0 30px rgba(0, 0, 0, 0.1);
|
||||
box-shadow: 0 0 30px rgba(0, 0, 0, 0.1);
|
||||
background: rgba(255, 255, 255, 1);
|
||||
border: none;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.login-screen {
|
||||
padding: 0 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.profile-img-card {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
display: block;
|
||||
-moz-border-radius: 50%;
|
||||
-webkit-border-radius: 50%;
|
||||
border-radius: 50%;
|
||||
margin: -93px auto 30px;
|
||||
border: 5px solid #fff;
|
||||
}
|
||||
|
||||
.profile-name-card {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.login-head {
|
||||
background: #899fe1;
|
||||
}
|
||||
|
||||
.login-form {
|
||||
padding: 40px 30px;
|
||||
position: relative;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
#login-form {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
#login-form .input-group {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
#login-form .form-control {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
</style>
|
||||
<!--@formatter:off-->
|
||||
{if $background}
|
||||
<style type="text/css">
|
||||
body{
|
||||
background-image: url('{$background}');
|
||||
}
|
||||
</style>
|
||||
{/if}
|
||||
<!--@formatter:on-->
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="login-wrapper">
|
||||
<div class="login-screen">
|
||||
<div class="well">
|
||||
<div class="login-head">
|
||||
<img src="__CDN__/assets/img/login-head.png" style="width:100%;"/>
|
||||
</div>
|
||||
<div class="login-form">
|
||||
<img id="profile-img" class="profile-img-card" src="__CDN__/assets/img/avatar.png"/>
|
||||
<p id="profile-name" class="profile-name-card"></p>
|
||||
|
||||
<form action="" method="post" id="login-form">
|
||||
<!--@AdminLoginFormBegin-->
|
||||
<div id="errtips" class="hide"></div>
|
||||
{:token()}
|
||||
<div class="input-group">
|
||||
<div class="input-group-addon"><span class="glyphicon glyphicon-user" aria-hidden="true"></span></div>
|
||||
<input type="text" class="form-control" id="pd-form-username" placeholder="{:__('Username')}" name="username" autocomplete="off" value="" data-rule="{:__('Username')}:required;username"/>
|
||||
</div>
|
||||
|
||||
<div class="input-group">
|
||||
<div class="input-group-addon"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span></div>
|
||||
<input type="password" class="form-control" id="pd-form-password" placeholder="{:__('Password')}" name="password" autocomplete="off" value="" data-rule="{:__('Password')}:required;password"/>
|
||||
</div>
|
||||
<!--@CaptchaBegin-->
|
||||
{if $Think.config.fastadmin.login_captcha}
|
||||
<div class="input-group">
|
||||
<div class="input-group-addon"><span class="glyphicon glyphicon-option-horizontal" aria-hidden="true"></span></div>
|
||||
<input type="text" name="captcha" class="form-control" placeholder="{:__('Captcha')}" data-rule="{:__('Captcha')}:required;length({$Think.config.captcha.length})" autocomplete="off"/>
|
||||
<span class="input-group-addon" style="padding:0;border:none;cursor:pointer;">
|
||||
<img src="{:rtrim('__PUBLIC__', '/')}/index.php?s=/captcha" width="100" height="30" onclick="this.src = '{:rtrim('__PUBLIC__', '/')}/index.php?s=/captcha&r=' + Math.random();"/>
|
||||
</span>
|
||||
</div>
|
||||
{/if}
|
||||
<!--@CaptchaEnd-->
|
||||
<div class="form-group checkbox">
|
||||
<label class="inline" for="keeplogin">
|
||||
<input type="checkbox" name="keeplogin" id="keeplogin" value="1"/>
|
||||
{:__('Keep login')}
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-success btn-lg btn-block" style="background:#708eea;">{:__('Sign in')}</button>
|
||||
</div>
|
||||
<!--@AdminLoginFormEnd-->
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{include file="common/script" /}
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user