Initial project files: BESCMS full source

This commit is contained in:
bes
2026-08-13 23:37:46 +08:00
parent fa6cddb540
commit 2e26f85723
2166 changed files with 396625 additions and 0 deletions
+126
View File
@@ -0,0 +1,126 @@
{template "header.html"}
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
{$form}
<div class="portlet bordered light myfbody">
<div class="portlet-title tabbable-line">
<ul class="nav nav-tabs" style="float:left;">
<li class="{if $page==0}active{/if}">
<a href="#tab_0" data-toggle="tab" onclick="$('#dr_page').val('0')"> <i class="fa fa-cog"></i> {dr_lang('账号设置')} </a>
</li>
</ul>
</div>
<div class="portlet-body">
<div class="tab-content">
<div class="tab-pane {if $page==0}active{/if}" id="tab_0">
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">请求日志</label>
<div class="col-md-9">
<input type="checkbox" name="data[log]" value="1" {if $data['log']}checked{/if} data-on-text="{dr_lang('已开启')}" data-off-text="{dr_lang('已关闭')}" data-on-color="success" data-off-color="danger" class="make-switch" data-size="small">
<span class="help-block">{dr_lang('记录微信端请求本站的日志,建议在开发阶段开启,正式上线后关闭')}</span>
</div>
</div>
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">AppId</label>
<div class="col-md-9">
<input class="form-control input-xlarge" type="text" name="data[appid]" value="{$data['appid']}" >
</div>
</div>
</div>
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">AppSecret</label>
<div class="col-md-9">
<input class="form-control input-xlarge" type="text" name="data[appsecret]" value="{$data['appsecret']}" >
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">Token</label>
<div class="col-md-9">
<div class="input-group input-xlarge">
<input type="text" class="form-control" name="data[token]" id="sys_token" value="{$data['token']}" >
<span class="input-group-btn">
<button class="btn green" type="button" onclick="dr_to_token()">生成</button>
</span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">EncodingAESKey</label>
<div class="col-md-6">
<div class="input-group ">
<input type="text" class="form-control" name="data[aeskey]" id="sys_asckey" value="{$data['aeskey']}" >
<span class="input-group-btn">
<button class="btn green" type="button" onclick="dr_to_aeskey()">生成</button>
</span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">服务器地址</label>
<div class="col-md-6">
<p class="form-control-static"> {ROOT_URL}index.php?s=weixin{if WEIXIN_MORE_ID>1}&gzh_id={WEIXIN_MORE_ID}{/if} </p>
</div>
</div>
{if $access_tocken}
<div class="form-group">
<label class="col-md-2 control-label">接入错误信息</label>
<div class="col-md-6">
<p class="form-control-static" style="color: red;"> {$access_tocken} </p>
</div>
</div>
{/if}
</div>
</div>
<div class="tab-pane {if $page==1}active{/if}" id="tab_1">
<div class="form-body">
</div>
</div>
</div>
</div>
</div>
<div class="portlet-body form myfooter">
<div class="form-actions text-center">
<label> <button type="button" onclick="dr_ajax_submit('{dr_now_url()}&page='+$('#dr_page').val(), 'myform', '2000')" class="btn green"> <i class="fa fa-save"></i> {dr_lang('保存')}</button>
</label>
<label> <a href="javascript:;" onclick="dr_iframe_show('{dr_lang('查看关注二维码')}','{dr_url('weixin/account/gz_index')}')" class="btn red"> <i class="fa fa-code"></i> {dr_lang('查看关注二维码')}</a>
</label>
</div>
</div>
</form>
<script type="text/javascript">
function dr_to_token() {
$.get("{dr_url(APP_DIR.'/api/token')}", function(data){
$("#sys_token").val(data);
});
}
function dr_to_aeskey() {
$.get("{dr_url(APP_DIR.'/api/asckey')}", function(data){
$("#sys_asckey").val(data);
});
}
</script>
{template "footer.html"}
+43
View File
@@ -0,0 +1,43 @@
{template "header.html"}
<div class="row table-search-tool" style="margin-top: -20px;">
<form action="{SELF}" method="get">
{$search}
<div class="col-xs-12">
<label><input type="text" class="form-control" placeholder="" value="{$param['keyword']}" name="keyword" /></label>
<label><button type="submit" class="btn blue btn-sm onloading" name="submit" > <i class="fa fa-search"></i> {dr_lang('搜索')}</button></label>
</div>
</form>
</div>
<form class="form-horizontal" role="form" id="myform">
{dr_form_hidden()}
<div class="table-scrollable">
<table class="table table-striped table-bordered table-hover table-checkable dataTable">
<thead>
<tr class="heading">
<th class="myselect">
</th>
<th>内容</th>
</tr>
</thead>
<tbody>
{loop $list $t}
<tr class="odd gradeX" id="dr_row_{$t.id}">
<td class="myselect" style="padding-left:10px !important">
<label class="mt-radio mt-radio-outline">
<input type="radio" class="cid" name="id" value="CID::{$t.id}">
<span></span>
</label>
</td>
<td>{$t.title}</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</form>
{template "footer.html"}
+111
View File
@@ -0,0 +1,111 @@
{template "header.html"}
<div class="text-center">
<button type="button" id="dr_check_button" onclick="dr_checking();" class="btn blue"> <i class="fa fa-refresh"></i> {dr_lang('立即开始')}</button>
</div>
<div id="dr_check_result" class="margin-top-30" style="display: none">
</div>
<div id="dr_check_div" class="well margin-top-30" style="display: none">
<div class="scroller" style="height:300px" data-rail-visible="1" id="dr_check_html">
</div>
</div>
<div id="dr_check_ing" style="display: none">
<div class="progress progress-striped">
<div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
</div>
</div>
</div>
<script>
$(function () {
dr_checking();
});
function dr_checking() {
$.ajax({
type: "GET",
dataType: "json",
url: "{$count_url}",
success: function (json) {
if (json.code == 0) {
$('#dr_check_div').show();
$('#dr_check_html').html('<font color="red">'+json.msg+'</font>');
} else {
$('#dr_check_html').html("");
$('#dr_check_result').html($('#dr_check_ing').html());
$('#dr_check_div').show();
$('#dr_check_result').show();
$('#dr_check_button').html('{dr_lang("正在初始化")}');
$('#dr_check_button').attr('disabled', true);
dr_ajax2ajax(1);
}
},
error: function(HttpRequest, ajaxOptions, thrownError) {
dr_ajax_alert_error(HttpRequest, this, thrownError);
}
});
}
function dr_ajax2ajax(page) {
$.ajax({
type: "GET",
dataType: "json",
url: "{$todo_url}&pp="+page,
success: function (json) {
$('#dr_check_html').append(json.msg);
document.getElementById('dr_check_html').scrollTop = document.getElementById('dr_check_html').scrollHeight;
$('#dr_check_result .progress-bar-success').attr('style', 'width:'+json.data.bfb+'%');
if (json.code == 0) {
$('#dr_check_button').attr('disabled', true);
$('#dr_check_button').html('<i class="fa fa-times-circle"></i> {dr_lang("出现错误")}');
} else {
if (json.msg == 'ok') {
$('#dr_check_button').attr('disabled', true);
$('#dr_check_button').html('<i class="fa fa-check-circle"></i> {dr_lang("发送完毕")}');
} else {
$('#dr_check_button').html('<i class="fa fa-refresh"></i> '+json.data.msg+'');
dr_ajax2ajax(json.code);
}
}
},
error: function(HttpRequest, ajaxOptions, thrownError) {
dr_ajax_alert_error(HttpRequest, this, thrownError);
}
});
}
</script>
<style>
#dr_check_html .p_error {
color: red;
}
#dr_check_html p {
margin: 10px 0;
clear: both;
}
#dr_check_html .rleft {
float: left;
}
#dr_check_html .rright .ok {
color: green;
}
#dr_check_html .rright .error {
color: red;
}
#dr_check_html .rright {
float: right;
}
</style>
{template "footer.html"}
+276
View File
@@ -0,0 +1,276 @@
{template "header.html"}
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
{$form}
<div class="portlet bordered light myfbody">
<div class="portlet-title tabbable-line">
<ul class="nav nav-tabs" style="float:left;">
<li class="{if $page==0}active{/if}">
<a href="#tab_0" data-toggle="tab" onclick="$('#dr_page').val('0')"> <i class="fa fa-cog"></i> {dr_lang('系统配置')} </a>
</li>
<li class="{if $page==1}active{/if}">
<a href="#tab_1" data-toggle="tab" onclick="$('#dr_page').val('1')"> <i class="fa fa-commenting"></i> {dr_lang('关注回复')} </a>
</li>
<li class="{if $page==2}active{/if}">
<a href="#tab_2" data-toggle="tab" onclick="$('#dr_page').val('2')"> <i class="fa fa-search"></i> {dr_lang('内容搜索')} </a>
</li>
<li class="{if $page==3}active{/if}">
<a href="#tab_3" data-toggle="tab" onclick="$('#dr_page').val('3')"> <i class="fa fa-user"></i> {dr_lang('关注绑定回复')} </a>
</li>
</ul>
</div>
<div class="portlet-body">
<div class="tab-content">
<div class="tab-pane {if $page==3}active{/if}" id="tab_3">
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">关注绑定</label>
<div class="col-md-9">
<p class="form-control-static"> 指扫描二维码关注公众号时提醒绑定会员账号或者系统自动生成会员账号 </p>
<p> 二维码在模板中调用函数: <?php echo htmlspecialchars('<a href="{'.'Router::oauth_url(\'wechat\', \'login\')}"> <img src="{'.'THEME_PATH}assets/oauth/wechat.png"> </a>');?></p>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">扫码登录成功</label>
<div class="col-md-9">
<textarea class="form-control" rows="3" name="data[gz_login]">{$data.gz_login}</textarea>
<span class="help-block">当用户扫码关注公众号并登录成功后的提示文字,可用通配符:{user}表示账号、{time}表示时间、{name}表示姓名,只有这3个通配符</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">扫码注册成功</label>
<div class="col-md-9">
<textarea class="form-control" rows="3" name="data[gz_reg]">{$data.gz_reg}</textarea>
<span class="help-block">当用户扫关注公众号并自动注册成功后的提示文字,可用通配符:{user}表示账号、{time}表示时间、{name}表示姓名,只有这3个通配符</span>
</div>
</div>
</div>
</div>
<div class="tab-pane {if $page==0}active{/if}" id="tab_0">
<div class="form-body">
<div class="form-group hide">
<label class="col-md-2 control-label">站点共享</label>
<div class="col-md-9">
<input type="checkbox" name="data[share]" value="1" {if $data['share']}checked{/if} data-on-text="{dr_lang('已开启')}" data-off-text="{dr_lang('已关闭')}" data-on-color="success" data-off-color="danger" class="make-switch" data-size="small">
<span class="help-block">{dr_lang('开启共享之后本站公众号数据将默认为主站数据')}</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">公众号内自动登录</label>
<div class="col-md-9">
<div class="mt-radio-inline">
<label class="mt-radio mt-radio-outline"><input type="radio" name="data[autologin]" value="0" {if !$data.autologin}checked=""{/if}> 关闭 <span></span></label>
<label class="mt-radio mt-radio-outline"><input type="radio" name="data[autologin]" value="1" {if $data.autologin ==1}checked=""{/if}> 自动登陆并绑定账号 <span></span></label>
<label class="mt-radio mt-radio-outline"><input type="radio" name="data[autologin]" value="2" {if $data.autologin ==2}checked=""{/if}> 提示用户是否绑定账号 <span></span></label>
</div>
<span class="help-block">{dr_lang('在公众号内访问网站时自动登录本微信所绑定的用户')}</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">强制绑定账号</label>
<div class="col-md-9">
<input type="checkbox" name="data[bang]" value="1" {if $data['bang']}checked{/if} data-on-text="{dr_lang('已开启')}" data-off-text="{dr_lang('已关闭')}" data-on-color="success" data-off-color="danger" class="make-switch" data-size="small">
<span class="help-block">{dr_lang('开启之后将会提醒他绑定账号账号才能进行自动回复功能')}</span>
</div>
</div>
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">强制绑定时提醒内容</label>
<div class="col-md-9">
<textarea class="form-control" rows="5" name="data[bang_text]">{$data.bang_text}</textarea>
<span class="help-block">{dr_lang('强制绑定账号的提醒文字,输入纯文本,不支持标签符号')}</span>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane {if $page==1}active{/if}" id="tab_1">
<div class="form-body">
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">关注时回复</label>
<div class="col-md-9">
<input type="checkbox" name="data[gz]" value="1" {if $data['gz']}checked{/if} data-on-text="{dr_lang('已开启')}" data-off-text="{dr_lang('已关闭')}" data-on-color="success" data-off-color="danger" class="make-switch" data-size="small">
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">回复类型</label>
<div class="col-md-9">
<div class=" mt-radio-inline">
<label class="mt-radio mt-radio-outline"> 文本
<input type="radio" onclick="dr_content_type(0)" value="0" {if !$data.gz_type}checked{/if} name="data[gz_type]">
<span></span>
</label>
<label class="mt-radio mt-radio-outline"> 素材
<input type="radio" onclick="dr_content_type(1)" value="1" {if $data.gz_type}checked{/if} name="data[gz_type]">
<span></span>
</label>
</div>
<span class="help-block">设置用户添加公众帐号好友时,发送的欢迎信息</span>
</div>
</div>
</div>
<div class="form-body mytype" id="dr_type_0" style="display: none">
<div class="form-group">
<label class="col-md-2 control-label">文本内容</label>
<div class="col-md-9">
<textarea class="form-control" rows="5" name="data[gz_value_0]">{$data.gz_value_0}</textarea>
</div>
</div>
</div>
<div class="form-body mytype" id="dr_type_1" style="display: none">
<div class="form-group">
<label class="col-md-2 control-label">素材选择</label>
<div class="col-md-9">
<div class="input-group input-xlarge">
<input type="text" class="form-control" name="data[gz_value_1]" id="gz_value_1" value="{$data['gz_value_1']}" >
<span class="input-group-btn">
<button class="btn green" type="button" onclick="dr_get_weixin_content('gz_value_1')">选择素材</button>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane {if $page==2}active{/if}" id="tab_2">
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">搜索时回复</label>
<div class="col-md-9">
<input type="checkbox" name="data[ss]" value="1" {if $data['ss']}checked{/if} data-on-text="{dr_lang('已开启')}" data-off-text="{dr_lang('已关闭')}" data-on-color="success" data-off-color="danger" class="make-switch" data-size="small">
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">搜索模块</label>
<div class="col-md-9">
<div class="mt-checkbox-list">
{loop $module $t}
<label class="mt-checkbox mt-checkbox-outline">
<input type="checkbox" name="data[ss_dir][]" value="{$t.dirname}" {if dr_in_array($t.dirname, $data.ss_dir)} checked{/if}> {$t.name}
<span></span>
</label>
{/loop}
</div>
</div>
</div>
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">回复类型</label>
<div class="col-md-9">
<div class=" mt-radio-inline">
<label class="mt-radio mt-radio-outline"> 文本
<input type="radio" onclick="dr_content_type2(0)" value="0" {if !$data.ss_type}checked{/if} name="data[ss_type]">
<span></span>
</label>
<label class="mt-radio mt-radio-outline"> 素材
<input type="radio" onclick="dr_content_type2(1)" value="1" {if $data.ss_type}checked{/if} name="data[ss_type]">
<span></span>
</label>
</div>
<span class="help-block">当系统没有搜索到任何内容时,不知道该如何回复粉丝的消息时,默认发送的内容</span>
</div>
</div>
</div>
<div class="form-body mytypess" id="dr_typess_0" style="display: none">
<div class="form-group">
<label class="col-md-2 control-label">文本内容</label>
<div class="col-md-9">
<textarea class="form-control" rows="5" name="data[ss_value_0]">{$data.ss_value_0}</textarea>
</div>
</div>
</div>
<div class="form-body mytypess" id="dr_typess_1" style="display: none">
<div class="form-group">
<label class="col-md-2 control-label">素材选择</label>
<div class="col-md-9">
<div class="input-group input-xlarge">
<input type="text" class="form-control" name="data[ss_value_1]" id="ss_value_1" value="{$data['ss_value_1']}" >
<span class="input-group-btn">
<button class="btn green" type="button" onclick="dr_get_weixin_content('ss_value_1')">选择素材</button>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portlet-body form myfooter">
<div class="form-actions text-center">
<button type="button" onclick="dr_ajax_submit('{dr_now_url()}&page='+$('#dr_page').val(), 'myform', '2000')" class="btn green"> <i class="fa fa-save"></i> {dr_lang('保存')}</button>
</div>
</div>
</form>
<script type="text/javascript">
$(function(){
dr_content_type('{intval($data.gz_type)}');
dr_content_type2('{intval($data.ss_type)}');
});
function dr_content_type(i) {
$('.mytype').hide();
$('#dr_type_'+i).show();
}
function dr_content_type2(i) {
$('.mytypess').hide();
$('#dr_typess_'+i).show();
}
function dr_get_weixin_content(id) {
layer.open({
type: 2,
title: '选择素材',
fix:true,
scrollbar: false,
shadeClose: true,
shade: 0,
area: ['70%', '70%'],
btn: [lang['ok'], lang['esc']],
yes: function(index, layero){
var body = layer.getChildFrame('body', index);
$(body).find('.form-group').removeClass('has-error');
var form2 = $(body).find('#myform').serializeArray();
for ( var p in form2 ){ // 方法
if (form2[p].name == 'id') {
$('#'+id).val(form2[p].value);
}
}
//$('#'+id).val(form.cid);
layer.closeAll();
},
content: '{dr_url('weixin/api/content')}&is_ajax=1'
});
}
</script>
{template "footer.html"}
+98
View File
@@ -0,0 +1,98 @@
{template "header.html"}
{template "api_list_date_search.html"}
<div class="right-card-box">
<div class="row table-search-tool">
<form action="{SELF}" method="get">
{dr_form_search_hidden()}
<div class="col-md-12 col-sm-12">
<label><input type="text" class="form-control" placeholder="" value="{$param['keyword']}" name="keyword" /></label>
</div>
<div class="col-md-12 col-sm-12">
<label>
<div class="input-group input-medium date-picker input-daterange" data-date="" data-date-format="yyyy-mm-dd">
<input type="text" class="form-control" value="{$param.date_form}" name="date_form">
<span class="input-group-addon"> {dr_lang('到')} </span>
<input type="text" class="form-control" value="{$param.date_to}" name="date_to">
</div>
</label>
</div>
<div class="col-md-12 col-sm-12">
<label><button type="submit" class="btn blue btn-sm onloading" name="submit" > <i class="fa fa-search"></i> {dr_lang('搜索')}</button></label>
</div>
</form>
</div>
<form class="form-horizontal" role="form" id="myform">
{dr_form_hidden()}
<div class="table-scrollable">
<table class="table table-striped table-bordered table-hover table-checkable dataTable">
<thead>
<tr class="heading">
<th class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
</th>
<th class="{dr_sorting('title')}" name="title">{dr_lang('标题')}</th>
<th width="80" style="text-align:center" class="{dr_sorting('media_id')}" name="media_id">{dr_lang('状态')}</th>
<th width="80" style="text-align:center" class="{dr_sorting('nums')}" name="nums">{dr_lang('数量')}</th>
<th width="150" class="{dr_sorting('inputtime')}" name="inputtime">{dr_lang('发布时间')}</th>
<th>{dr_lang('操作')}</th>
</tr>
</thead>
<tbody>
{loop $list $t}
<tr class="odd gradeX" id="dr_row_{$t.id}">
<td class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="checkboxes" name="ids[]" value="{$t.id}" />
<span></span>
</label>
</td>
<td>{$t.title}</td>
<td style="text-align:center">
{if !$t.media_id}
<span class="label label-sm label-danger"> {dr_lang('未同步')} </span>
{else}
<span class="label label-sm label-success"> {$zt[$t.status]} </span>
{/if}</td>
<td style="text-align:center">
{$t.nums}</td>
<td>{dr_date($t.inputtime, '', 'red')}</td>
<td>
{if $ci->_is_admin_auth('edit')}
<label><a href="{dr_url($uriprefix.'/edit', ['id'=>$t.id, 'tid'=>$tid])}" class="btn btn-xs green"> <i class="fa fa-edit"></i> {dr_lang('修改')}</a></label>
{/if}
{if $t.article_url}<label><a target="_blank" href="{$t.article_url}" class="btn btn-xs dark"> <i class="fa fa-search"></i> {dr_lang('预览')}</a></label>{/if}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="row fc-list-footer table-checkable ">
<div class="col-md-5 fc-list-select">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
<button type="button" onclick="dr_ajax_option('{dr_url($uriprefix.'/del')}', '{dr_lang('你确定要删除它们吗?')}', 1)" class="btn red btn-sm"> <i class="fa fa-trash"></i> {dr_lang('删除')}</button>
<button type="button" onclick="dr_ajax_option('{dr_url($uriprefix.'/sync_add')}', '{dr_lang('你确定要同步它们吗?')}', 1)" class="btn green btn-sm"> <i class="fa fa-refresh"></i> {dr_lang('一键同步')}</button>
</div>
<div class="col-md-7 fc-list-page">
{$mypages}
</div>
</div>
</form>
{template "footer.html"}
+192
View File
@@ -0,0 +1,192 @@
{template "header.html"}
<div class="note note-danger">
<p>图文的封面图、标题必须填写</p>
</div>
<script>
$(function () {
dr_wx_content(1);
$('.wx-p-box-title').click(function () {
var cid = $(this).attr('cid');
$('.wx-p-box-title').removeClass('on');
$(this).addClass('on');
dr_wx_content(cid);
});
$('.wx-content-field').click(function () {
var cid = $('#dr_wx_cid').val();
var img = $('#fileupload_thumb_'+cid+'_files').find('img').attr('src');
$('#wx-box-thumb-'+cid).html('<img src="'+img+'">');
});
});
function dr_wx_content(cid) {
$('#dr_wx_cid').val(cid);
$('.wx-content-field .form-group').hide();
$('#dr_row_title_'+cid).show();
$('#dr_row_author_'+cid).show();
$('#dr_row_thumb_'+cid).show();
$('#dr_row_description_'+cid).show();
$('#dr_row_content_'+cid).show();
$('#dr_row_url_'+cid).show();
}
function dr_wx_show_title(cid) {
$('#wx-box-title-'+cid).html($('#dr_title_'+cid).val());
}
</script>
<style>
.wx-p-box .wx-p-box-title {
border: 1px solid #e7ecf1;
padding: 5px;
}
.wx-p-box .wx-p-box-title .color-view {
height: 100px;
}
.wx-p-box .wx-p-box-title .color-demo {
margin-bottom: 0;
}
.wx-p-box .on {
padding: 9px 9px;
border: 2px solid #43b548;
}
.wx-p-box-otitle {
float: left;
width: 120px;
height: 55px;
}
.color-demo .color-view img, .wx-img-prev img {
max-width: 100%;
max-height: 100%;
}
.color-demo .color-view {
padding:0;
text-align: center;
overflow: hidden;
width: 100%;
height: 100%;
}
.wx-img-prev {
width: 60px; height: 60px;overflow: hidden;padding: 0 !important;
}
.media {
margin-top: 15px
}
.media:first-child {
margin-top: 0
}
.media,.media-body {
zoom: 1;
overflow: hidden
}
.media-object.img-thumbnail {
max-width: none
}
.media-right,.media>.pull-right {
padding-left: 10px
}
.media-left,.media>.pull-left {
padding-right: 10px
}
.media-body,.media-left,.media-right {
display: table-cell;
vertical-align: top
}
.media-middle {
vertical-align: middle
}
.media-bottom {
vertical-align: bottom
}
.media-heading {
margin-top: 0;
margin-bottom: 5px
}
.media-list {
padding-left: 0;
list-style: none
}
</style>
<input id="dr_wx_cid" type="hidden" value="1">
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
{$form}
<div class="row myfbody">
<div class="col-md-3">
<div class="portlet light bordered">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject font-green sbold ">{dr_lang('图文列表')}</span>
</div>
</div>
<div class="portlet-body wx-p-box">
<div class="wx-p-box-title on" cid="1">
<div class="color-demo">
<div id="wx-box-thumb-1" class="color-view bg-default bg-font-default bold uppercase">
{if $thumb_1}<img src="{dr_get_file($thumb_1)}">{/if}
</div>
<div id="wx-box-title-1" class="color-info bg-blue-ebonyclay bg-font-grey-cascade c-font-14 sbold"> {if $title_1}{$title_1}{else}这里输入标题{/if} </div>
</div>
</div>
<?php for($i=2;$i<=9;$i++) {
eval('$thumb= $thumb_'.$i.';');
eval('$title= $title_'.$i.';');
?>
<div class="wx-p-box-title media" cid="{$i}">
<div id="wx-box-thumb-{$i}" class="pull-right bg-default wx-img-prev">
{if $thumb}<img src="{dr_get_file($thumb)}">{/if}
</div>
<div class="media-body wx-p-box-otitle" id="wx-box-title-{$i}">{if $title}{$title}{else}这里输入标题{/if}</div>
</div>
<?php } ?>
</div>
</div>
</div>
<div class="col-md-9">
<div class="portlet light bordered">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject font-green sbold ">{dr_lang('当前内容')}</span>
</div>
<div class="actions">
<div class="btn-group">
<a class="btn" href="{$reply_url}"> <i class="fa fa-mail-reply"></i> {dr_lang('返回列表')}</a>
</div>
</div>
</div>
<div class="portlet-body form">
<div class="form-body wx-content-field">
{$myfield}
</div>
</div>
</div>
</div>
</div>
<div class="portlet-body form myfooter">
<div class="form-actions text-center">
<button type="button" onclick="dr_ajax_submit('{dr_now_url()}', 'myform', '2000')" class="btn green"> <i class="fa fa-save"></i> {dr_lang('保存内容')}</button>
<button type="button" onclick="dr_ajax_submit('{dr_now_url()}', 'myform', '2000', '{$reply_url}&tid={$tid}')" class="btn yellow"> <i class="fa fa-mail-reply-all"></i> {dr_lang('保存并返回')}</button>
</div>
</div>
</form>
{template "footer.html"}
+34
View File
@@ -0,0 +1,34 @@
{template "header.html"}
<form class="form-horizontal" method="post" role="form" id="myform">
{$form}
<div class="form-body">
<div class="form-group" id="dr_row_name">
<label class="col-xs-3 control-label ajax_name">{dr_lang('标签名称')}</label>
<div class="col-xs-8">
<label>
<input type="text" class="form-control" id="dr_name" name="data[name]" value="{$name}">
</label>
</div>
</div>
<div class="form-group">
<label class="col-xs-3 control-label ajax_name">{dr_lang('绑定用户组')}</label>
<div class="col-xs-8">
<label>
<select name="data[groupid]" class="form-control">
<option value="0"> -- </option>
{loop $ci->member_cache['group'] $t}
<option value="{$t.id}" {if $groupid==$t.id}selected{/if}>{$t.name}</option>
{/loop}
</select>
</label>
<span class="help-block"> {dr_lang('给微信粉丝分配用户组,用于绑定本站会员的微信粉丝')} </span>
</div>
</div>
</div>
</form>
{template "footer.html"}
+75
View File
@@ -0,0 +1,75 @@
{template "header.html"}
<div class="note note-danger">
<p>{dr_lang('微信标签组用户可设置个性化菜单')}</p>
</div>
<div class="right-card-box">
<form class="form-horizontal" role="form" id="myform">
{dr_form_hidden()}
<div class="table-scrollable">
<table class="table table-striped table-bordered table-hover table-checkable dataTable">
<thead>
<tr class="heading">
{if $ci->_is_admin_auth('del')}
<th class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
</th>
{/if}
<th width="80" class="{dr_sorting('tag')}" name="tag">Tag</th>
<th width="200" class="{dr_sorting('name')}" name="name">{dr_lang('标签')}</th>
<th style="text-align:center" width="200" class="{dr_sorting('groupid')}" name="groupid">{dr_lang('用户组')}</th>
<th style="text-align:center" width="80">{dr_lang('粉丝数')}</th>
<th>{dr_lang('操作')}</th>
</tr>
</thead>
<tbody>
{loop $list $t}
<tr class="odd gradeX" id="dr_row_{$t.id}">
{if $ci->_is_admin_auth('del')}
<td class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="checkboxes" name="ids[]" value="{$t.id}" />
<span></span>
</label>
</td>
{/if}
<td>{$t.tag}</td>
<td>{$t.name}</td>
<td style="text-align:center"> {if !$t.groupid} -- {else} {$ci->member_cache['group'][$t.groupid]['name']} {/if} </td>
<td style="text-align:center"> {$t.count} </td>
<td>
{if $ci->_is_admin_auth('edit')}
<label><a href="javascript:dr_iframe('edit', '{dr_url($uriprefix.'/edit', ['id'=>$t.id])}', '', '33%');" class="btn btn-xs green"> <i class="fa fa-edit"></i> {dr_lang('修改')}</a></label>
<label><a href="javascript:dr_iframe_show('{$t.name}', '{dr_url('weixin/menu/index', ['gid'=>$t.tag])}', '', '');" class="btn btn-xs blue"> <i class="fa fa-list"></i> {dr_lang('设置个性化菜单')}</a></label>
{/if}
{if $ci->_is_admin_auth('del')}
<label><a href="javascript:;" onclick="dr_ajax_option('{dr_url($uriprefix.'/menu_del', ['gid'=>$t.tag])}', '{dr_lang('你确定要删除它吗?')}', 1)" class="btn btn-xs red"> <i class="fa fa-trash"></i> {dr_lang('删除个性化菜单')}</a></label>
{/if}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="row fc-list-footer table-checkable ">
<div class="col-md-5 fc-list-select">
{if $ci->_is_admin_auth('del')}
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
<button type="button" onclick="dr_ajax_option('{dr_url($uriprefix.'/del')}', '{dr_lang('你确定要删除它们吗?')}', 1)" class="btn red btn-sm"> <i class="fa fa-trash"></i> {dr_lang('删除')}</button>
{/if}
</div>
<div class="col-md-7 fc-list-page">
{$mypages}
</div>
</div>
</form>
{template "footer.html"}
+46
View File
@@ -0,0 +1,46 @@
{template "header.html"}
<link href="{THEME_PATH}assets/global/plugins/codemirror/lib/codemirror.css" rel="stylesheet" type="text/css" />
<link href="{THEME_PATH}assets/global/plugins/codemirror/theme/neat.css" rel="stylesheet" type="text/css" />
<script src="{THEME_PATH}assets/global/plugins/codemirror/lib/codemirror.js" type="text/javascript"></script>
<script src="{THEME_PATH}assets/global/plugins/codemirror/mode/javascript/javascript.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function() {
var myTextArea = document.getElementById('file_code');
var myCodeMirror = CodeMirror.fromTextArea(myTextArea, {
lineNumbers: true,
matchBrackets: true,
styleActiveLine: true,
theme: "neat",
mode: 'javascript'
});
});
</script>
<div class="note note-danger">
<p>
{if $islog}<a style="color: red" href="{dr_url('weixin/account/index')}">
当前已开启请求日志记录功能,建议上线后关闭此项,会生成大量日志内容,增加服务器负担
{else}<a style="color: blue" href="{dr_url('weixin/account/index')}">
当前没有开启请求日志记录功能,开发阶段建议开启日志可以分析微信是否与服务器通信
{/if} </a>
</p>
<p style="margin-top: 10px;">
<label><button type="button" onclick="dr_ajax_option('{dr_url('weixin/log/del')}', '{dr_lang('你确定要清空记录吗?')}', 1)" class="btn red btn-sm"> <i class="fa fa-trash"></i> {dr_lang('清空')}</button></label>
</p>
</div>
<div class="right-card-box">
<div class="form-group">
<textarea id="file_code" name="code">{$code}</textarea>
</div>
{template "footer.html"}
+69
View File
@@ -0,0 +1,69 @@
<html><head>
<title>关注微信公众号</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://res.wx.qq.com/connect/zh_CN/htmledition/style/impowerApp45a337.css">
<link href="https://res.wx.qq.com/connect/zh_CN/htmledition/images/favicon.ico" rel="Shortcut Icon">
<script src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/jquery.min.js"></script>
</head>
<body style="background-color: rgb(51, 51, 51); padding: 50px;">
<div class="old-template" style="">
<div class="main impowerBox">
<div class="loginPanel normalPanel">
<div class="title">{SITE_NAME}</div>
<div class="waiting panelContent">
<div class="wrp_code"><img class="qrcode lightBorder" src="{$qrcode_url}"></div>
<div class="info">
<div class="status status_browser js_status js_wx_default_tip normal" id="wx_default_tip">
<p>请使用微信扫描二维码关注公众号</p>
<p><a href="javascript:dr_weixin_notify();">扫码之后单击登录网站</a></p>
</div>
<div class="status status_succ js_status js_wx_after_scan normal" style="display:none" id="wx_after_scan">
<i class="status_icon icon38_msg succ"></i>
<div class="status_txt">
<h4>扫码成功</h4>
<p>请在返回网站进行操作</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function dr_weixin_notify() {
$.ajax({
type : "post",
url : "{$notify_url}",
dataType : "json",
success : function(json){
if (json.code == 1) {
$('#wx_default_tip').hide();
$('#wx_after_scan').show();
var oss_url = json.data.sso;
// 发送同步登录信息
for(var i in oss_url){
$.ajax({
type: "GET",
url:oss_url[i],
dataType: "jsonp",
success: function(json){ },
error: function(){ }
});
}
if (json.data.url) {
setTimeout("window.location.href = '"+json.data.url+"'", 2000);
} else{
setTimeout("window.location.href = '{$back_url}'", 2000);
}
} else {
alert('没有收到扫码信息');
}
},
error:function(){ }
});
}
</script>
</body>
</html>
+76
View File
@@ -0,0 +1,76 @@
{template "header.html"}
<div class="note note-danger">
<p><a href="javascript:dr_admin_menu_ajax('{dr_url($uriprefix.'/sync_index')}');">{dr_lang('立即将菜单同步更新到公众号')}</a></p>
</div>
<div class="right-card-box">
<form class="form-horizontal" role="form" id="myform">
{dr_form_hidden()}
<div class="table-scrollable">
<table class="table table-striped table-bordered table-hover table-checkable dataTable">
<thead>
<tr class="heading">
{if $ci->_is_admin_auth('del')}
<th class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
</th>
{/if}
<th width="70" style="text-align:center"> {dr_lang('排序')} </th>
<th class="{dr_sorting('name')}" name="name">{dr_lang('名称')}</th>
<th style="text-align:center" width="120">{dr_lang('动作')}</th>
<th>{dr_lang('操作')}</th>
</tr>
</thead>
<tbody>
{loop $list $t}
<tr class="odd gradeX" id="dr_row_{$t.id}">
{if $ci->_is_admin_auth('del')}
<td class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="checkboxes" name="ids[]" value="{$t.id}" />
<span></span>
</label>
</td>
{/if}
<td style="text-align:center">
<input type="text" onblur="dr_ajax_save(this.value, '{dr_url($uriprefix.'/displayorder_edit', ['id'=>$t.id])}')" value="{$t.displayorder}" class="displayorder form-control input-sm input-inline input-mini">
</td>
<td {if $t.pid} style="padding-left: 30px" {/if}>{dr_html2emoji($t.name)}</td>
<td style="text-align:center"> {$menu_type[$t.type]} </td>
<td>
{if $ci->_is_admin_auth('edit')}
{if !$t.pid && !$t.type}
<label><a href="javascript:dr_iframe('edit', '{dr_url($uriprefix.'/edit', ['id'=>$t.id,'gid'=>$gid])}', '50%', '50%');" class="btn btn-xs green"> <i class="fa fa-edit"></i> {dr_lang('修改')}</a></label>
<label><a href="{dr_url($uriprefix.'/add', ['pid'=>$t.id,'gid'=>$gid])}" class="btn btn-xs red"> <i class="fa fa-plus"></i> {dr_lang('添加')}</a></label>
{else}
<label><a href="{dr_url($uriprefix.'/edit', ['id'=>$t.id,'gid'=>$gid])}" class="btn btn-xs green"> <i class="fa fa-edit"></i> {dr_lang('修改')}</a></label>
{/if}
{/if}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="row fc-list-footer table-checkable ">
<div class="col-md-5 fc-list-select">
{if $ci->_is_admin_auth('del')}
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
<button type="button" onclick="dr_ajax_option('{dr_url($uriprefix.'/del')}', '{dr_lang('你确定要删除它们吗?')}', 1)" class="btn red btn-sm"> <i class="fa fa-trash"></i> {dr_lang('删除')}</button>
{/if}
</div>
<div class="col-md-7 fc-list-page">
{$mypages}
</div>
</div>
</form>
{template "footer.html"}
+165
View File
@@ -0,0 +1,165 @@
{template "header.html"}
<div class="note note-danger">
<p>1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。</p>
<p>2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。</p>
</div>
<script src="{THEME_PATH}assets/js/jquery.insert.js" type="text/javascript"></script>
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
{$form}
<div class="portlet bordered light myfbody">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject font-green "><i class="fa fa-list"></i> 自定义菜单</span>
</div>
</div>
<div class="portlet-body">
<div class="tab-content">
<div class="form-body">
<div class="form-group" id="dr_row_pid">
<label class="col-xs-2 control-label">{dr_lang('菜单级别')}</label>
<div class="col-xs-8">
<div class="input-group input-xlarge">
<label><select name="data[pid]" class="form-control">
<option value="0"> 一级菜单</option>
{loop $menu_top $t}
<option value="{$t.id}" {if $pid== $t.id} selected {/if}> {dr_html2emoji($t.name)}</option>
{/loop}
</select></label>
</div>
</div>
</div>
<div class="form-group" id="dr_row_name">
<label class="col-xs-2 control-label">{dr_lang('菜单名称')}</label>
<div class="col-xs-8">
<div class="input-group input-xlarge">
<input type="text" class="form-control" name="data[name]" value="{dr_html2emoji($name)}" id="dr_name" />
<span class="input-group-btn">
<button class="btn green" type="button" onclick="dr_insert_emoji('name')"> <i class="fa fa-smile-o"></i> 表情</button>
</span>
</div>
</div>
</div>
<div class="form-group">
<label class="col-xs-2 control-label">动作类型</label>
<div class="col-xs-8">
<div class=" mt-radio-inline">
{loop $menu_type $n $v}
<label class="mt-radio mt-radio-outline"> {$v}
<input type="radio" onclick="dr_menu_type('{$n}')" value="{$n}" {if $type==$n} checked{/if} name="data[type]">
<span></span>
</label>
{/loop}
</div>
</div>
</div>
<div class="mytype form-group type_view" style="display: none">
<label class="col-md-2 control-label">网页地址</label>
<div class="col-md-9">
<div class="input-group">
<input type="text" class="form-control" name="value_view" value="{$value}" id="dr_value_view" />
<div class="input-group-btn dropup">
<button type="button" class="btn green dropdown-toggle" data-toggle="dropdown" tabindex="-1" aria-expanded="false">
<i class="fa fa-angle-up"></i>
</button>
<ul class="dropdown-menu pull-right" role="menu">
{loop $view_url $t}
<li>
<a href="javascript:;" onclick="$('#dr_value_view').val('{$t.value}')"> {$t.name} </a>
</li>
{/loop}
</ul>
</div>
</div>
</div>
</div>
<div class="mytype form-group type_article_view_limited" style="display: none">
<label class="col-md-2 control-label">图文素材</label>
<div class="col-md-9">
<label><select name="value_article_view_limited" class="form-control">
<option value="0"> --</option>
{loop $twsc $t}
<option value="{$t.article_id}" {if $value== $t.article_id} selected {/if}> {$t.title}</option>
{/loop}
</select></label>
<span class="help-block">只显示已经同步成功的图文素材</span>
</div>
</div>
<div class="mytype form-group type_click" style="display: none">
<label class="col-md-2 control-label">小插件</label>
<div class="col-md-9">
<div class="input-group input-xlarge">
<input type="text" class="form-control" name="value_click" value="{$value}" id="dr_value_click" />
<div class="input-group-btn dropup">
<button type="button" class="btn green dropdown-toggle" data-toggle="dropdown" tabindex="-1" aria-expanded="false">
<i class="fa fa-angle-up"></i>
</button>
<ul class="dropdown-menu pull-right" role="menu">
{loop $plugin $t}
<li>
<a href="javascript:;" onclick="$('#dr_value_click').val('{$t.value}')"> {$t.name} </a>
</li>
{/loop}
</ul>
</div>
</div>
<div class="alert alert-info input-xlarge margin-top-20">
自定义小插件目录为./Plugins/程序名/Run.php
</div>
</div>
</div>
<div class="mytype form-group type_login" style="display: none">
<label class="col-md-2 control-label">跳转地址</label>
<div class="col-md-9">
<input type="text" class="form-control" name="value_login" value="{$value}" />
<span class="help-block">弹出登录授权之后再跳转的地址,例如会员中心的功能</span>
</div>
</div>
<div class="mytype form-group type_miniprogram" style="display: none">
<label class="col-md-2 control-label">小程序appid</label>
<div class="col-md-9">
<input type="text" class="form-control" name="value_miniprogram[appid]" value="{php echo is_array($value) ? $value.appid : '';}" />
<span class="help-block">小程序的APPID</span>
</div>
</div>
<div class="mytype form-group type_miniprogram" style="display: none">
<label class="col-md-2 control-label">小程序路径</label>
<div class="col-md-9">
<input type="text" class="form-control" name="value_miniprogram[path]" value="{php echo is_array($value) ? $value.path : '';}" />
<span class="help-block">例如:pages/lunar/index</span>
</div>
</div>
<div class="mytype form-group type_miniprogram" style="display: none">
<label class="col-md-2 control-label">小程序url</label>
<div class="col-md-9">
<input type="text" class="form-control" name="value_miniprogram[url]" value="{php echo is_array($value) ? $value.url : '';}" />
<span class="help-block">不支持小程序的老版本客户端将打开本url。</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portlet-body form myfooter">
<div class="form-actions text-center">
<button type="button" onclick="dr_ajax_submit('{dr_now_url()}&page='+$('#dr_page').val(), 'myform', '2000', '{$reply_url}')" class="btn green"> <i class="fa fa-save"></i> {dr_lang('保存')}</button>
</div>
</div>
</form>
<script type="text/javascript">
$(function(){
dr_menu_type('{$type}');
});
function dr_menu_type(i) {
$('.mytype').hide();
$('.type_'+i).show();
}
</script>
{template "footer.html"}
@@ -0,0 +1,24 @@
{template "header.html"}
<script src="{THEME_PATH}assets/js/jquery.insert.js" type="text/javascript"></script>
<form class="form-horizontal" method="post" role="form" id="myform">
{$form}
<div class="form-body">
<div class="form-group" id="dr_row_name">
<label class="col-xs-3 control-label ajax_name">{dr_lang('菜单名称')}</label>
<div class="col-xs-8">
<div class="input-group input-xlarge">
<input type="text" class="form-control" name="data[name]" value="{dr_html2emoji($name)}" id="dr_name" />
<span class="input-group-btn">
<button class="btn green" type="button" onclick="dr_insert_emoji('name')"> <i class="fa fa-smile-o"></i> 表情</button>
</span>
</div>
</div>
</div>
</div>
</form>
{template "footer.html"}
+113
View File
@@ -0,0 +1,113 @@
{template "header.html"}
{template "api_list_date_search.html"}
<div class="right-card-box">
<div class="row table-search-tool">
<form action="{SELF}" method="get">
{dr_form_search_hidden()}
<div class="col-md-12 col-sm-12">
<label>
<select name="field" class="form-control">
{loop $field $t}
{if $t.ismain}
<option value="{$t.fieldname}" {if $param.field==$t.fieldname}selected{/if}>{$t.name}</option>
{/if}
{/loop}
</select>
</label>
<label><i class="fa fa-caret-right"></i></label>
<label><input type="text" class="form-control" placeholder="" value="{$param['keyword']}" name="keyword" /></label>
</div>
<div class="col-md-12 col-sm-12">
<label>
<div class="input-group input-medium date-picker input-daterange" data-date="" data-date-format="yyyy-mm-dd">
<input type="text" class="form-control" value="{$param.date_form}" name="date_form">
<span class="input-group-addon"> {dr_lang('到')} </span>
<input type="text" class="form-control" value="{$param.date_to}" name="date_to">
</div>
</label>
</div>
<div class="col-md-12 col-sm-12">
<label><button type="submit" class="btn blue btn-sm onloading" name="submit" > <i class="fa fa-search"></i> {dr_lang('搜索')}</button></label>
</div>
</form>
</div>
<form class="form-horizontal" role="form" id="myform">
{dr_form_hidden()}
<div class="table-scrollable">
<table class="table table-striped table-bordered table-hover table-checkable dataTable">
<thead>
<tr class="heading">
<th class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
</th>
<th style="text-align:center" width="60" class="{dr_sorting('id')}" name="id">Id</th>
<th style="text-align:center" width="70" class="{dr_sorting('openid')}" name="openid">头像</th>
<th width="150" class="{dr_sorting('nikcname')}" name="nikcname">{dr_lang('昵称')}</th>
<th width="80" style="text-align:center" class="{dr_sorting('tid')}" name="tid">{dr_lang('类型')}</th>
<th width="80" style="text-align:center" class="{dr_sorting('status')}" name="status">{dr_lang('状态')}</th>
<th width="150" class="{dr_sorting('inputtime')}" name="inputtime">{dr_lang('录入时间')}</th>
<th>{dr_lang('内容')}</th>
</tr>
</thead>
<tbody>
{loop $list $t}
<tr class="odd gradeX" id="dr_row_{$t.id}">
<td class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="checkboxes" name="ids[]" value="{$t.id}" />
<span></span>
</label>
</td>
<td style="text-align:center"> {$t.id}</td>
<td style="text-align:center"> <img width="45" class="img-circle" src="{$t.headimgurl}"> </td>
<td>{dr_html2emoji($t.nickname)}</td>
<td style="text-align:center">{$t.tid_name}</td>
<td style="text-align:center">{$t.status_name}</td>
<td>{dr_date($t.inputtime, '', 'red')}</td>
<td class="member_info_p">
{if $t.tid == 'text'}
<p>{$t.content}</p>
{if $ci->_is_admin_auth('weixin/send/add')}
<p><a href="{dr_url('weixin/send/index', ['uid'=>$t.userid])}" class="btn btn-xs green"> <i class="fa fa-send"></i> {dr_lang('发送消息')}</a></p>
{/if}
{else}
{if $t.status==1}
<label><a href="javascript:dr_iframe_show('详情', '{dr_url('weixin/message/show')}&file={$t.file}&tid={$t.tid}');" class="btn btn-xs dark"> <i class="fa fa-search"></i> 查看详情</a></label>
{/if}
{if $ci->_is_admin_auth('weixin/send/add')}
<label><a href="{dr_url('weixin/send/index', ['uid'=>$t.userid])}" class="btn btn-xs green"> <i class="fa fa-send"></i> {dr_lang('发送消息')}</a></label>
{/if}
{/if}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="row fc-list-footer table-checkable ">
<div class="col-md-5 fc-list-select">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
<button type="button" onclick="dr_ajax_option('{dr_url($uriprefix.'/del')}', '{dr_lang('你确定要删除它们吗?')}', 1)" class="btn red btn-sm"> <i class="fa fa-trash"></i> {dr_lang('删除')}</button>
<button type="button" onclick="dr_admin_menu_ajax('{dr_url($uriprefix.'/update_add')}')" class="btn green btn-sm"> <i class="fa fa-refresh"></i> {dr_lang('一键更新状态')}</button>
</div>
<div class="col-md-7 fc-list-page">
{$mypages}
</div>
</div>
</form>
{template "footer.html"}
+32
View File
@@ -0,0 +1,32 @@
<div style="text-align:center">
<p>{$url}</p>
{if $tid=='image'}
<img src="{$url}" width="100%" >
{elseif $tid=='voice'}
{if strpos($url, 'amr') !== false}
<button class="icon-audio" id="playerBtn" style="margin:0 5px;cursor:pointer;" playerurl="{$url}">播放</button>
<div style="width:1px;height:1px;" id="playerQT">
</div>
<script src="{THEME_PATH}assets/global/plugins/jquery.min.js" type="text/javascript"></script>
<script>
//js代码如下。。好吧用到了jquery自己替换吧
var playerQT = document.getElementById("playerQT");
$("#playerBtn").bind("click",function(e){
var playerUrl = e.target.getAttribute("playerUrl");
playerAudio(playerUrl);
});
function playerAudio(url){
var html = '<embed width="1px" height="1px" name="plugin" src="'+url+'" type="audio/amr" id="QT_EMB">';
playerQT.innerHTML = html;
}
</script>
{else}
<audio src="{$url}" controls preload></audio>
{/if}
{else}
<video src="{$url}" controls preload></video>
{/if}
</div>
+68
View File
@@ -0,0 +1,68 @@
{template "header.html"}
<div class="right-card-box">
<form class="form-horizontal" role="form" id="myform">
{dr_form_hidden()}
<div class="table-scrollable">
<table class="table table-striped table-bordered table-hover table-checkable dataTable">
<thead>
<tr class="heading">
{if $ci->_is_admin_auth('del')}
<th class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
</th>
{/if}
<th width="80" class="{dr_sorting('id')}" name="id">{dr_lang('Id')}</th>
<th width="200" class="{dr_sorting('name')}" name="name">{dr_lang('名称')}</th>
<th style="text-align:center" width="100">{dr_lang('粉丝数')}</th>
<th>{dr_lang('操作')}</th>
</tr>
</thead>
<tbody>
{loop $list $t}
<tr class="odd gradeX" id="dr_row_{$t.id}">
{if $ci->_is_admin_auth('del')}
<td class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="checkboxes" name="ids[]" value="{$t.id}" />
<span></span>
</label>
</td>
{/if}
<td>{$t.id}</td>
<td>{$t.name}</td>
<td style="text-align:center"> {$t.count} </td>
<td>
{if $ci->_is_admin_auth('edit')}
<label><a href="javascript:dr_iframe('edit', '{dr_url($uriprefix.'/edit', ['id'=>$t.id])}', '', '200px');" class="btn btn-xs green"> <i class="fa fa-edit"></i> {dr_lang('修改')}</a></label>
{/if}
<label><a href="{dr_url($uriprefix.'/go_index', ['id'=>$t.id])}" class="btn btn-xs red"> <i class="fa fa-cog"></i> {dr_lang('进入')}</a></label>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="row fc-list-footer table-checkable ">
<div class="col-md-5 fc-list-select">
{if $ci->_is_admin_auth('del')}
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
<button type="button" onclick="dr_ajax_option('{dr_url($uriprefix.'/del')}', '{dr_lang('你确定要删除它们吗?')}', 1)" class="btn red btn-sm"> <i class="fa fa-trash"></i> {dr_lang('删除')}</button>
{/if}
</div>
<div class="col-md-7 fc-list-page">
{$mypages}
</div>
</div>
</form>
{template "footer.html"}
+18
View File
@@ -0,0 +1,18 @@
{template "header.html"}
<form class="form-horizontal" method="post" role="form" id="myform">
{$form}
<div class="form-body">
<div class="form-group" id="dr_row_name">
<label class="col-xs-3 control-label ajax_name">{dr_lang('公众号名称')}</label>
<div class="col-xs-8">
<input type="text" class="form-control" id="dr_name" name="data[name]" value="{$name}">
</div>
</div>
</div>
</form>
{template "footer.html"}
+95
View File
@@ -0,0 +1,95 @@
{template "header.html"}
{template "api_list_date_search.html"}
<div class="right-card-box">
<div class="row table-search-tool">
<form action="{SELF}" method="get">
{dr_form_search_hidden()}
<div class="col-md-12 col-sm-12">
<label><input type="text" class="form-control" placeholder="" value="{$param['keyword']}" name="keyword" /></label>
</div>
<div class="col-md-12 col-sm-12">
<label>
<div class="input-group input-medium date-picker input-daterange" data-date="" data-date-format="yyyy-mm-dd">
<input type="text" class="form-control" value="{$param.date_form}" name="date_form">
<span class="input-group-addon"> {dr_lang('到')} </span>
<input type="text" class="form-control" value="{$param.date_to}" name="date_to">
</div>
</label>
</div>
<div class="col-md-12 col-sm-12">
<label><button type="submit" class="btn blue btn-sm onloading" name="submit" > <i class="fa fa-search"></i> {dr_lang('搜索')}</button></label>
</div>
</form>
</div>
<form class="form-horizontal" role="form" id="myform">
{dr_form_hidden()}
<div class="table-scrollable">
<table class="table table-striped table-bordered table-hover table-checkable dataTable">
<thead>
<tr class="heading">
<th class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
</th>
<th width="70" style="text-align:center"> {dr_lang('排序')} </th>
<th width="200" class="{dr_sorting('title')}" name="title">{dr_lang('名称')}</th>
<th class="{dr_sorting('keyword')}" name="keyword">{dr_lang('关键词')}</th>
<th width="100" style="text-align:center" class="{dr_sorting('counts')}" name="counts">{dr_lang('命中次数')}</th>
<th width="170" class="{dr_sorting('updatetime')}" name="updatetime">{dr_lang('命中时间')}</th>
<th>{dr_lang('操作')}</th>
</tr>
</thead>
<tbody>
{loop $list $t}
<tr class="odd gradeX" id="dr_row_{$t.id}">
<td class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="checkboxes" name="ids[]" value="{$t.id}" />
<span></span>
</label>
</td>
<td style="text-align:center">
<input type="text" onblur="dr_ajax_save(this.value, '{dr_url($uriprefix.'/displayorder_edit', ['id'=>$t.id])}')" value="{$t.displayorder}" class="displayorder form-control input-sm input-inline input-mini">
</td>
<td>{$t.title}</td>
<td>{$t.keyword}</td>
<td style="text-align:center">{$t.counts}</td>
<td>{dr_date($t.updatetime, '', 'red')}</td>
<td>
{if $ci->_is_admin_auth('edit')}
<label><a href="{dr_url($uriprefix.'/edit', ['id'=>$t.id, 'tid'=>$tid])}" class="btn btn-xs green"> <i class="fa fa-edit"></i> {dr_lang('修改')}</a></label>
{/if}
{if strpos($t.content, 'CID:')===0}<label style="display: none;"><a target="_blank" href="/index.php?s=weixin&c=news&id={substr($t.content, 5)}" class="btn btn-xs dark"> <i class="fa fa-search"></i> {dr_lang('预览')}</a></label>{/if}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="row fc-list-footer table-checkable ">
<div class="col-md-5 fc-list-select">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
<button type="button" onclick="dr_ajax_option('{dr_url($uriprefix.'/del')}', '{dr_lang('你确定要删除它们吗?')}', 1)" class="btn red btn-sm"> <i class="fa fa-trash"></i> {dr_lang('删除')}</button>
</div>
<div class="col-md-7 fc-list-page">
{$mypages}
</div>
</div>
</form>
{template "footer.html"}
+121
View File
@@ -0,0 +1,121 @@
{template "header.html"}
<div class="note note-danger">
<p>多个关键词以分号分开,权重值越大匹配几率越高</p>
</div>
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
{$form}
<div class="portlet bordered light myfbody">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject font-green sbold ">{dr_lang('回复规则')}</span>
</div>
<div class="actions">
<div class="btn-group">
<a class="btn" href="{$reply_url}"> <i class="fa fa-mail-reply"></i> {dr_lang('返回列表')}</a>
</div>
</div>
</div>
<div class="portlet-body form">
<div class="form-body wx-content-field">
<div class="form-group" id="dr_row_title">
<label class="col-xs-2 control-label">{dr_lang('规则名称')}</label>
<div class="col-xs-8">
<input type="text" class="form-control input-xlarge" name="data[title]" value="{$title}" id="dr_title" />
</div>
</div>
<div class="form-group" id="dr_row_keyword">
<label class="col-xs-2 control-label">{dr_lang('匹配关键字')}</label>
<div class="col-xs-8">
<input type="text" class="form-control input-xlarge" name="data[keyword]" value="{$keyword}" data-role="tagsinput" id="dr_keyword" />
</div>
</div>
<div class="form-group" id="dr_row_displayorder">
<label class="col-xs-2 control-label">{dr_lang('匹配权重值')}</label>
<div class="col-xs-8">
<label><input type="text" class="form-control" name="data[displayorder]" value="{$displayorder}" /></label>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">回复类型</label>
<div class="col-md-9">
<div class=" mt-radio-inline">
<label class="mt-radio mt-radio-outline"> 文本
<input type="radio" onclick="dr_content_type(0)" value="0" {if !$tid}checked{/if} name="data[tid]">
<span></span>
</label>
<label class="mt-radio mt-radio-outline"> 素材
<input type="radio" onclick="dr_content_type(1)" value="1" {if $tid}checked{/if} name="data[tid]">
<span></span>
</label>
</div>
</div>
</div>
<div class="form-group mytype" id="dr_type_0" style="display: none">
<label class="col-md-2 control-label">文本内容</label>
<div class="col-md-9">
<textarea class="form-control" rows="5" name="value[0]">{$content}</textarea>
</div>
</div>
<div class="form-group mytype" id="dr_type_1" style="display: none">
<label class="col-md-2 control-label">素材选择</label>
<div class="col-md-9">
<div class="input-group input-xlarge">
<input type="text" class="form-control" name="value[1]" id="gz_value_1" value="{$content}" >
<span class="input-group-btn">
<button class="btn green" type="button" onclick="dr_get_weixin_content('gz_value_1')">选择素材</button>
</span>
</div>
</div>
</div>
</div>
</div>
<div class="portlet-body form myfooter">
<div class="form-actions text-center">
<button type="button" onclick="dr_ajax_submit('{dr_now_url()}', 'myform', '2000')" class="btn green"> <i class="fa fa-save"></i> {dr_lang('保存内容')}</button>
<button type="button" onclick="dr_ajax_submit('{dr_now_url()}', 'myform', '2000', '{$reply_url}')" class="btn yellow"> <i class="fa fa-mail-reply-all"></i> {dr_lang('保存并返回')}</button>
</div>
</div>
</form>
<script type="text/javascript">
$(function(){
dr_content_type('{intval($tid)}');
});
function dr_content_type(i) {
$('.mytype').hide();
$('#dr_type_'+i).show();
}
function dr_get_weixin_content(id) {
layer.open({
type: 2,
title: '选择素材',
fix:true,
scrollbar: false,
shadeClose: true,
shade: 0,
area: ['70%', '70%'],
btn: [lang['ok'], lang['esc']],
yes: function(index, layero){
var body = layer.getChildFrame('body', index);
$(body).find('.form-group').removeClass('has-error');
var form2 = $(body).find('#myform').serializeArray();
for ( var p in form2 ){ // 方法
if (form2[p].name == 'id') {
$('#'+id).val(form2[p].value);
}
}
//$('#'+id).val(form.cid);
layer.closeAll();
},
content: '{dr_url('weixin/api/content')}&is_ajax=1'
});
}
</script>
{template "footer.html"}
+131
View File
@@ -0,0 +1,131 @@
{template "header.html"}
<div class="note note-danger">
<p>只能推送给48小时内互动过的粉丝,否则就会提示发送失败</p>
</div>
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
{$form}
<div class="portlet bordered light ">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject font-green ">客服群发</span>
</div>
</div>
<div class="portlet-body">
<div class="form-group">
<label class="col-xs-2 control-label">接收粉丝</label>
<div class="col-xs-8">
<div class=" mt-radio-inline">
<label class="mt-radio mt-radio-outline"> 全部粉丝【{$ucount}】
<input type="radio" value="0" {if !$uuid}checked{/if} name="data[groupid]">
<span></span>
</label>
{loop $group $v}
<label class="mt-radio mt-radio-outline"> {$v.name}【{$v.count}】
<input type="radio" {if $v.tag == $uuid}checked{/if} value="{$v.tag}" name="data[groupid]">
<span></span>
</label>
{/loop}
</div>
</div>
</div>
<div class="form-group">
<label class="col-xs-2 control-label">内容类型</label>
<div class="col-xs-8">
<div class=" mt-radio-inline">
<label class="mt-radio mt-radio-outline "> 内容
<input type="radio" onclick="dr_content_type(1)" value="1" checked name="data[type]">
<span></span>
</label>
<label class="mt-radio mt-radio-outline"> 文本
<input type="radio" onclick="dr_content_type(0)" value="0" name="data[type]">
<span></span>
</label>
</div>
</div>
</div>
</div>
</div>
<div class="portlet bordered light myfbody">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject font-green ">消息内容</span>
</div>
</div>
<div class="portlet-body mytype" id="dr_type_1" style="display: none">
<div class="row table-search-tool ">
<div class="col-xs-12">
<label><input type="text" class="form-control" value="{$param['keyword']}" name="search[keyword]" /></label>
<label><button type="submit" class="btn blue btn-sm onloading" name="submit" > <i class="fa fa-search"></i> {dr_lang('搜索')}</button></label>
<label>如果图文数超过1,则将会发送失败</label>
</div>
</div>
<div class="table-scrollable">
<table class="table table-striped table-bordered table-hover table-checkable dataTable">
<thead>
<tr class="heading">
<th class="myselect"></th>
<th>{dr_lang('主题')}</th>
<th width="80" style="text-align:center" >{dr_lang('状态')}</th>
<th width="80" style="text-align:center" >{dr_lang('图文数')}</th>
<th width="170" >{dr_lang('发布时间')}</th>
</tr>
</thead>
<tbody>
{loop $list $t}
<tr class="odd gradeX" id="dr_row_{$t.id}">
<td class="myselect" style="padding-left:10px !important">
<label class="mt-radio mt-radio-outline">
<input type="radio" name="data[content][1]" value="{$t.id}">
<span></span>
</label>
</td>
<td>{$t.title}</td>
<td style="text-align:center">
{if !$t.media_id}
<span class="label label-sm label-danger"> {dr_lang('未同步')} </span>
{else}
<span class="label label-sm label-success"> {dr_lang('已同步')} </span>
{/if}</td>
<td style="text-align:center">
{$t.nums}
</td>
<td>{dr_date($t.inputtime, '', 'red')}</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div>
<div class="portlet-body mytype" id="dr_type_0" style="display: none">
<textarea class="form-control" rows="5" name="data[content][0]"></textarea>
</div>
</div>
<div class="portlet-body form myfooter">
<div class="form-actions text-center">
<button type="button" onclick="dr_ajax_submit('{dr_now_url()}&ac=send', 'myform', '2000')" class="btn green"> <i class="fa fa-send"></i> {dr_lang('发送')}</button>
</div>
</div>
</form>
<script type="text/javascript">
$(function(){
dr_content_type('1');
});
function dr_content_type(i) {
$('.mytype').hide();
$('#dr_type_'+i).show();
}
</script>
{template "footer.html"}
@@ -0,0 +1,92 @@
{template "header.html"}
<div class="note note-danger">
<p>在公众平台网站上,为订阅号提供了每天一条的群发权限,为服务号提供每月(自然月)4条的群发权限。</p>
</div>
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
{$form}
<div class="portlet bordered light ">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject font-green ">接收粉丝</span>
</div>
</div>
<div class="portlet-body">
<div class=" mt-radio-inline">
<label class="mt-radio mt-radio-outline"> 全部粉丝【{$ucount}】
<input type="radio" value="0" checked name="data[groupid]">
<span></span>
</label>
{loop $group $v}
<label class="mt-radio mt-radio-outline"> {$v.name}【{$v.count}】
<input type="radio" value="{$v.tag}" name="data[groupid]">
<span></span>
</label>
{/loop}
</div>
</div>
</div>
<div class="portlet bordered light myfbody">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject font-green ">内容选择</span>
</div>
</div>
<div class="portlet-body">
<div class="row table-search-tool">
<div class="col-xs-12">
<label><input type="text" class="form-control" value="{$param['keyword']}" name="search[keyword]" /></label>
<label><button type="submit" class="btn blue btn-sm onloading" name="submit" > <i class="fa fa-search"></i> {dr_lang('搜索')}</button></label>
</div>
</div>
<div class="table-scrollable">
<table class="table table-striped table-bordered table-hover table-checkable dataTable">
<thead>
<tr class="heading">
<th class="myselect"></th>
<th>{dr_lang('主题')}</th>
<th width="80" style="text-align:center" >{dr_lang('状态')}</th>
<th width="150" >{dr_lang('发布时间')}</th>
</tr>
</thead>
<tbody>
{loop $list $t}
<tr class="odd gradeX" id="dr_row_{$t.id}">
<td class="myselect" style="padding-left:10px !important">
<label class="mt-radio mt-radio-outline">
<input type="radio" name="data[content]" value="{$t.id}">
<span></span>
</label>
</td>
<td>{$t.title}</td>
<td style="text-align:center">
{if !$t.media_id}
<span class="label label-sm label-danger"> {dr_lang('未同步')} </span>
{else}
<span class="label label-sm label-success"> {dr_lang('已同步')} </span>
{/if}</td>
<td>{dr_date($t.inputtime, '', 'red')}</td>
</tr>
{/loop}
</tbody>
</table>
</div>
</div>
</div>
<div class="portlet-body form myfooter">
<div class="form-actions text-center">
<button type="button" onclick="dr_ajax_submit('{dr_now_url()}&ac=send', 'myform', '2000')" class="btn green"> <i class="fa fa-send"></i> {dr_lang('发送')}</button>
</div>
</div>
</form>
{template "footer.html"}
+112
View File
@@ -0,0 +1,112 @@
{template "header.html"}
<div class="note note-danger">
<p>模板消息发送对象是已关注本公众号的粉丝</p>
</div>
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
{$form}
<div class="row myfbody">
<div class="col-md-12">
<div class="form-horizontal">
<div class="portlet bordered light ">
<div class="portlet-title tabbable-line">
<ul class="nav nav-tabs" style="float:left;">
{loop $module $dir $t}
<li class="{if $page == $dir}active{/if}">
<a href="#tab_{$dir}" data-toggle="tab" onclick="$('#dr_page').val('{$dir}')"> <i class="{dr_icon($t.icon)}"></i> {$t.name} </a>
</li>
{/loop}
</ul>
</div>
<input type="hidden" id="dr_page" value="{$page}">
<div class="portlet-body">
<div class="tab-content" style="padding-top: 30px">
{loop $module $dir $m}
{php $i=$dir;}
<div class="tab-pane {if $page==$dir}active{/if}" id="tab_{$dir}">
<div class="tab-pane {if $i == $page}active{/if}" id="tab_{$i}">
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">可用状态</label>
<div class="col-md-9">
<input type="checkbox" name="data[{$dir}][use]" value="1" {if $data[$dir]['use']}checked{/if} data-on-text="{dr_lang('已开启')}" data-off-text="{dr_lang('已关闭')}" data-on-color="success" data-off-color="danger" class="make-switch" data-size="small">
<span class="help-block">{dr_lang('开启后会出现在模块记录列表中')}</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label ">{dr_lang('模版ID')}</label>
<div class="col-md-6">
<input type="text" class="form-control" name="data[{$dir}][id]" value="{$data[$dir]['id']}">
<span class="help-block">在微信公众号中-功能-模板消息-我的模板:模板ID</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label ">{dr_lang('主题颜色')}</label>
<div class="col-md-6">
<label> <input type="text" class="form-control" name="data[{$dir}][color]" value="{$data[$dir]['color']}"></label>
<span class="help-block">微信消息主题显示的颜色,例如:红色是#ff0000</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label ">{dr_lang('模板内容参数')}</label>
<div class="col-md-9">
<table class="table table-mtotal table-nomargin table-bordered table-striped table-bordered table-advance">
<thead>
<tr>
<th width="200">参数名</th>
<th>参数值</th>
</tr>
</thead>
<tbody>
{php for ($i = 0;$i < 10 ;$i++) { }
<?php
if (!isset($data[$dir]['content'])) {
$data[$dir]['content'] = [];
}
?>
<tr>
<td><input type="text" class="form-control" name="data[{$dir}][content][{$i}][name]" value="{$data[$dir]['content'][$i]['name']}"></td>
<td><textarea class="form-control" style="height:80px" name="data[{$dir}][content][{$i}][value]">{$data[$dir]['content'][$i]['value']}</textarea></td>
</tr>
{php } }
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{/loop}
</div>
</div>
</div>
</div>
<div class="portlet-body form myfooter">
<div class="form-actions text-center">
<label><button type="button" onclick="dr_ajax_submit('{dr_now_url()}&page='+$('#dr_page').val(), 'myform', '2000')" class="btn green"> <i class="fa fa-save"></i> {dr_lang('保存内容')}</button></label>
</div>
</div>
</form>
{template "footer.html"}
+108
View File
@@ -0,0 +1,108 @@
{template "header.html"}
{template "api_list_date_search.html"}
<div class="right-card-box">
<div class="row table-search-tool">
<form action="{SELF}" method="get">
{dr_form_search_hidden()}
<div class="col-md-12 col-sm-12">
<label>
<select name="field" class="form-control">
{loop $field $t}
<option value="{$t.fieldname}" {if $param.field==$t.fieldname}selected{/if}>{$t.name}</option>
{/loop}
<option value="id"> Id </option>
</select>
</label>
<label><i class="fa fa-caret-right"></i></label>
<label><input type="text" class="form-control" placeholder="" value="{$param['keyword']}" name="keyword" /></label>
</div>
<div class="col-md-12 col-sm-12">
<label>
<div class="input-group input-medium date-picker input-daterange" data-date="" data-date-format="yyyy-mm-dd">
<input type="text" class="form-control" value="{$param.date_form}" name="date_form">
<span class="input-group-addon"> {dr_lang('到')} </span>
<input type="text" class="form-control" value="{$param.date_to}" name="date_to">
</div>
</label>
</div>
<div class="col-md-12 col-sm-12">
<label><button type="submit" class="btn blue btn-sm onloading" name="submit" > <i class="fa fa-search"></i> {dr_lang('搜索')}</button></label>
</div>
</form>
</div>
<form class="form-horizontal" role="form" id="myform">
{dr_form_hidden()}
<div class="table-scrollable">
<table class="table table-striped table-bordered table-hover table-checkable dataTable">
<thead>
<tr class="heading">
{if $ci->_is_admin_auth('del')}
<th class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
</th>
{/if}
<th class="{dr_sorting('title')}" name="title">{dr_lang('主题')}</th>
<th width="100" class="{dr_sorting('counts')}" name="counts">{dr_lang('发送人数')}</th>
<th width="170" class="{dr_sorting('inputtime')}" name="inputtime">{dr_lang('发布时间')}</th>
<th>{dr_lang('操作')}</th>
</tr>
</thead>
<tbody>
{loop $list $t}
<tr class="odd gradeX" id="dr_row_{$t.id}">
{if $ci->_is_admin_auth('del')}
<td class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="checkboxes" name="ids[]" value="{$t.id}" />
<span></span>
</label>
</td>
{/if}
<td>{dr_list_function('title', $t['title'], $param)}</td>
<td>{$t.counts}</td>
<td>{dr_date($t.inputtime)}</td>
<td>
{if $ci->_is_admin_auth('edit')}
<label><a href="{dr_url($uriprefix.'/edit', ['id'=>$t.id])}" class="btn btn-xs green"> <i class="fa fa-edit"></i> {dr_lang('修改')}</a></label>
<label><a href="javascript:dr_admin_menu_ajax('{dr_url($uriprefix.'/copy_edit', ['id'=>$t.id])}');" class="btn btn-xs dark"> <i class="fa fa-copy"></i> {dr_lang('复制')}</a></label>
{/if}
<label><a href="javascript:;" onclick="dr_bfb_submit('{dr_lang('发送给微信粉丝')}', 'myform', '{dr_url('weixin/template/todo_add', ['id' => $t.id])}')" class="btn btn-xs dark"> <i class="fa fa-send"></i> {dr_lang('发送')}</a></label>
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="row fc-list-footer table-checkable ">
<div class="col-md-5 fc-list-select">
{if $ci->_is_admin_auth('del')}
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
<button type="button" onclick="dr_ajax_option('{dr_url($uriprefix.'/del')}', '{dr_lang('你确定要删除它们吗?')}', 1)" class="btn red btn-sm"> <i class="fa fa-trash"></i> {dr_lang('删除')}</button>
{/if}
</div>
<div class="col-md-7 fc-list-page">
{$mypages}
</div>
</div>
</form>
{template "footer.html"}
+130
View File
@@ -0,0 +1,130 @@
{template "header.html"}
<div class="note note-danger">
<p>模板消息发送对象是已关注本公众号的粉丝</p>
</div>
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
{$form}
<div class="row myfbody">
<div class="col-md-12">
<div class="portlet light bordered">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject font-green sbold ">{dr_lang('消息信息')}</span>
</div>
<div class="actions">
<div class="btn-group">
<a class="btn" href="{$reply_url}"> <i class="fa fa-mail-reply"></i> {dr_lang('返回列表')}</a>
</div>
</div>
</div>
<div class="portlet-body">
<div class="form-body">
<div class="form-group" id="dr_row_title">
<label class="col-md-2 control-label ">{dr_lang('主题')}</label>
<div class="col-md-6">
<input type="text" class="form-control" id="dr_title" name="data[title]" value="{$title}">
<span class="help-block">在CMS中描述这个消息是干什么的,不会在微信中显示</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label ">{dr_lang('模版ID')}</label>
<div class="col-md-6">
<input type="text" class="form-control" name="data[template]" value="{$template}">
<span class="help-block">在微信公众号中-功能-模板消息-我的模板:模板ID</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label ">{dr_lang('跳转URL')}</label>
<div class="col-md-6">
<input type="text" class="form-control" name="data[url]" value="{$url}">
<span class="help-block">在微信公众号中单击这个模板消息的跳转url,需要https://或者http://开头</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label ">{dr_lang('主题颜色')}</label>
<div class="col-md-6">
<label> <input type="text" class="form-control" name="data[color]" value="{$color}"></label>
<span class="help-block">微信消息主题显示的颜色,例如:红色是#ff0000</span>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label ">{dr_lang('已发统计')}</label>
<div class="col-md-6">
<label> <input type="text" class="form-control" name="data[counts]" value="{$counts}"></label>
</div>
</div>
<div class="form-group">
<label class="col-xs-2 control-label">接收粉丝</label>
<div class="col-xs-8">
<div class=" mt-radio-inline">
<label class="mt-radio mt-radio-outline"> 全部粉丝【{$ucount}】
<input type="radio" onclick="$('.is_openid').hide()" value="0" {if !$groupid}checked{/if} name="data[groupid]">
<span></span>
</label>
{loop $group $v}
<label class="mt-radio mt-radio-outline"> {$v.name}【{$v.count}】
<input type="radio" onclick="$('.is_openid').hide()" {if $groupid == $v.tag}checked{/if} value="{$v.tag}" name="data[groupid]">
<span></span>
</label>
{/loop}
{loop $ci->member_cache['group'] $v}
<label class="mt-radio mt-radio-outline"> {$v.name}
<input type="radio" onclick="$('.is_openid').hide()" {if $groupid == -$v.id}checked{/if} value="-{$v.id}" name="data[groupid]">
<span></span>
</label>
{/loop}
</div>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label ">{dr_lang('模板内容参数')}</label>
<div class="col-md-9">
<table class="table table-mtotal table-nomargin table-bordered table-striped table-bordered table-advance">
<thead>
<tr>
<th width="200">参数名</th>
<th>参数值</th>
</tr>
</thead>
<tbody>
{php for ($i = 0;$i < 10 ;$i++) { }
<tr>
<td><input type="text" class="form-control" name="data[content][{$i}][name]" value="{$content[$i]['name']}"></td>
<td>
<textarea class="form-control" style="height:80px" name="data[content][{$i}][value]">{$content[$i]['value']}</textarea>
</td>
</tr>
{php } }
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portlet-body form myfooter">
<div class="form-actions text-center">
<label><button type="button" onclick="dr_ajax_submit('{dr_now_url()}', 'myform', '2000')" class="btn green"> <i class="fa fa-save"></i> {dr_lang('保存内容')}</button></label>
<label><button type="button" onclick="dr_ajax_submit('{dr_now_url()}', 'myform', '2000', '{$reply_url}')" class="btn yellow"> <i class="fa fa-send"></i> {dr_lang('保存并返回')}</button></label>
</div>
</div>
</form>
{template "footer.html"}
+119
View File
@@ -0,0 +1,119 @@
{template "header.html"}
<div class="note note-danger">
<p><a href="https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html" target="_blank">2021年12月27日之后,微信关注后回调接口不再获取微信头像和昵称</a></p>
</div>
<div class="right-card-box">
<div class="row table-search-tool">
<form action="{SELF}" method="get">
{dr_form_search_hidden()}
<div class="col-md-12 col-sm-12">
<label>
<select name="groupid" class="form-control">
<option value=""> {dr_lang('全部')} </option>
{loop $group $t}
<option value="{$t.tag}" {if $param.groupid==$t.tag}selected{/if}>{$t.name}</option>
{/loop}
</select>
</label>
</div>
<div class="col-md-12 col-sm-12">
<label>
<select name="field" class="form-control">
{loop $field $t}
{if $t.ismain}
<option value="{$t.fieldname}" {if $param.field==$t.fieldname}selected{/if}>{$t.name}</option>
{/if}
{/loop}
</select>
</label>
<label><i class="fa fa-caret-right"></i></label>
<label><input type="text" class="form-control" placeholder="" value="{$param['keyword']}" name="keyword" /></label>
</div>
<div class="col-md-12 col-sm-12">
<label><button type="submit" class="btn blue btn-sm onloading" name="submit" > <i class="fa fa-search"></i> {dr_lang('搜索')}</button></label>
</div>
</form>
</div>
<form class="form-horizontal" role="form" id="myform">
{dr_form_hidden()}
<div class="table-scrollable">
<table class="table table-striped table-bordered table-hover table-checkable dataTable">
<thead>
<tr class="heading">
<th class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
</th>
<th style="text-align:center" width="70" class="{dr_sorting('id')}" name="id">Id</th>
<th width="80" style="text-align:center" class="{dr_sorting('id')}" name="id">{dr_lang('头像')}</th>
<th width="180" class="{dr_sorting('nickname')}" name="nickname">{dr_lang('昵称')}</th>
<th width="210" class="{dr_sorting('openid')}" name="openid">{dr_lang('OID')}</th>
<th style="text-align:center" class="{dr_sorting('groupids')}" name="groupids">{dr_lang('标签组')}</th>
<th width="200" style="text-align:center" class="{dr_sorting('uid')}" name="uid">{dr_lang('绑定账号')}</th>
<th width="170" class="{dr_sorting('subscribe')}" name="subscribe">{dr_lang('关注时间')}</th>
<th>{dr_lang('操作')}</th>
</tr>
</thead>
<tbody>
{loop $list $t}
<tr class="odd gradeX" id="dr_row_{$t.id}">
<td class="myselect">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="checkboxes" name="ids[]" value="{$t.id}" />
<span></span>
</label>
</td>
<td style="text-align:center"> {$t.id} </td>
<td style="text-align:center"> <img width="30" class="img-circle" src="{if $t.headimgurl}{$t.headimgurl}{else}{dr_avatar(0)}{/if}"> </td>
<td>{dr_html2emoji($t.nickname)}</td>
<td>{trim($t.openid)}</td>
<td style="text-align:center">{if !$t.groupids}--{else}
{php $gids=dr_string2array($t.groupids);}
{loop $gids $i}
<span class="label label-sm label-success" id="{$i}">{$group[$i]['name']}</span>
{/loop}
{/if}</td>
<td style="text-align:center">{if !$t.uid}--{else}<a href="javascript:;" member="{$t.username}" class="fc_member_show"> {$t.username} </a>{/if}</td>
<td>{dr_date($t.subscribe, '', 'red')}</td>
<td>
{if $ci->_is_admin_auth('weixin/send/add')}
<label><a href="{dr_url('weixin/send/index', ['uid'=>$t.id])}" class="btn btn-xs green"> <i class="fa fa-send"></i> {dr_lang('发送消息')}</a></label>
{/if}
</td>
</tr>
{/loop}
</tbody>
</table>
</div>
<div class="row fc-list-footer table-checkable ">
<div class="col-md-5 fc-list-select">
<label class="mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline">
<input type="checkbox" class="group-checkable" data-set=".checkboxes" />
<span></span>
</label>
<button type="button" onclick="dr_ajax_option('{dr_url($uriprefix.'/del')}', '{dr_lang('你确定要删除它们吗?')}', 1)" class="btn red btn-sm"> <i class="fa fa-trash"></i> {dr_lang('删除')}</button>
<label>
<select name="groupid" class="form-control">
<option value=""> -- </option>
{loop $group $t}
<option value="{$t.tag}" {if $param.groupid==$t.id}selected{/if}>{$t.name}</option>
{/loop}
</select>
</label>
<label><button type="button" onclick="dr_ajax_option('{dr_url($uriprefix.'/move_edit')}', '{dr_lang('你确定要操作它们吗?')}', 1)" class="btn green btn-sm"> <i class="fa fa-edit"></i> {dr_lang('设置分组')}</button></label>
<label><button type="button" onclick="dr_ajax_option('{dr_url($uriprefix.'/move_del')}', '{dr_lang('你确定要操作它们吗?')}', 1)" class="btn red btn-sm"> <i class="fa fa-trash"></i> {dr_lang('取消分组')}</button></label>
</div>
<div class="col-md-7 fc-list-page">
{$mypages}
</div>
</div>
</form>
{template "footer.html"}
+126
View File
@@ -0,0 +1,126 @@
{template "header.html"}
<script src="{THEME_PATH}assets/global/plugins/amcharts/amcharts/amcharts.js" type="text/javascript"></script>
<script src="{THEME_PATH}assets/global/plugins/amcharts/amcharts/serial.js" type="text/javascript"></script>
<script src="{THEME_PATH}assets/global/plugins/amcharts/amcharts/themes/light.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
var chart = AmCharts.makeChart("chartdiv", {
"theme": "light",
"type": "serial",
"dataProvider": {$data_tj},
"valueAxes": [{
"unit": "人",
"position": "left",
"title": "最近关注详情",
}],
"startDuration": 1,
"graphs": [{
"balloonText": "[[category]] 新关注粉丝数: <b>[[value]]</b>",
"fillAlphas": 0.9,
"lineAlpha": 0.2,
"title": "新关注",
"type": "column",
"valueField": "year2004"
}, {
"balloonText": "[[category]] 累计关注粉丝数: <b>[[value]]</b>",
"fillAlphas": 0.9,
"lineAlpha": 0.2,
"title": "累计关注",
"type": "column",
"clustered":false,
"columnWidth":0.5,
"valueField": "year2005"
}],
"plotAreaFillAlphas": 0.1,
"categoryField": "country",
"categoryAxis": {
"gridPosition": "start"
},
"export": {
"enabled": true
}
});
});
</script>
<div class="row widget-row">
<div class="col-md-3">
<!-- BEGIN WIDGET THUMB -->
<div class="widget-thumb widget-bg-color-white text-uppercase margin-bottom-20 bordered">
<h4 class="widget-thumb-heading">今日新关注</h4>
<div class="widget-thumb-wrap">
<i class="widget-thumb-icon bg-green fa fa-plus"></i>
<div class="widget-thumb-body" style="padding-top:10px">
<span class="widget-thumb-body-stat">{intval($fans[$today]['new'])}</span>
</div>
</div>
</div>
<!-- END WIDGET THUMB -->
</div>
<div class="col-md-3">
<!-- BEGIN WIDGET THUMB -->
<div class="widget-thumb widget-bg-color-white text-uppercase margin-bottom-20 bordered">
<h4 class="widget-thumb-heading">今日取消关注 </h4>
<div class="widget-thumb-wrap">
<i class="widget-thumb-icon bg-red fa fa-minus"></i>
<div class="widget-thumb-body" style="padding-top:10px">
<span class="widget-thumb-body-stat">{intval($fans[$today]['cancel'])}</span>
</div>
</div>
</div>
<!-- END WIDGET THUMB -->
</div>
<div class="col-md-3">
<!-- BEGIN WIDGET THUMB -->
<div class="widget-thumb widget-bg-color-white text-uppercase margin-bottom-20 bordered">
<h4 class="widget-thumb-heading">累积关注 </h4>
<div class="widget-thumb-wrap">
<i class="widget-thumb-icon bg-blue icon-bar-chart"></i>
<div class="widget-thumb-body" style="padding-top:10px">
<span class="widget-thumb-body-stat">{intval($usercount)}</span>
</div>
</div>
</div>
<!-- END WIDGET THUMB -->
</div>
<div class="col-md-3">
<!-- BEGIN WIDGET THUMB -->
<div class="widget-thumb widget-bg-color-white text-uppercase margin-bottom-20 bordered">
<h4 class="widget-thumb-heading">今日消息数 </h4>
<div class="widget-thumb-wrap">
<i class="widget-thumb-icon bg-purple fa fa-envelope"></i>
<div class="widget-thumb-body" style="padding-top:10px">
<span class="widget-thumb-body-stat">{intval($msgcount)}</span>
</div>
</div>
</div>
<!-- END WIDGET THUMB -->
</div>
</div>
<div class="row">
<div class="col-md-12 col-sm-12">
<div class="portlet light bordered">
<div class="portlet-title">
<div class="caption">
<span class="caption-subject bold uppercase font-dark">关注详情</span>
</div>
</div>
<div class="portlet-body">
<div id="chartdiv" class="chart" style="height: 400px;"> </div>
</div>
</div>
</div>
</div>
{template "footer.html"}
+91
View File
@@ -0,0 +1,91 @@
{template "header.html"}
<form action="" class="form-horizontal" method="post" name="myform" id="myform">
{$form}
<div class="portlet bordered light myfbody">
<div class="portlet-title tabbable-line">
<ul class="nav nav-tabs" style="float:left;">
<li class="{if $page==0}active{/if}">
<a href="#tab_0" data-toggle="tab" onclick="$('#dr_page').val('0')"> <i class="fa fa-cog"></i> {dr_lang('账号设置')} </a>
</li>
</ul>
</div>
<div class="portlet-body">
<div class="tab-content">
<div class="tab-pane {if $page==0}active{/if}" id="tab_0">
<div class="form-body">
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">AppId</label>
<div class="col-md-9">
<input class="form-control input-xlarge" type="text" name="data[appid]" value="{$data['appid']}" >
</div>
</div>
</div>
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">AppSecret</label>
<div class="col-md-9">
<input class="form-control input-xlarge" type="text" name="data[appsecret]" value="{$data['appsecret']}" >
</div>
</div>
</div>
<div class="form-body">
<div class="form-group">
<label class="col-md-2 control-label">授权登录模式</label>
<div class="col-md-9">
<div class="mt-radio-inline">
<label class="mt-radio mt-checkbox-outline"><input type="radio" name="data[login]" value="0" {if !$data['login']}checked{/if} /> {dr_lang('绑定账号')} <span></span></label>
<label class="mt-radio mt-checkbox-outline"><input type="radio" name="data[login]" value="1" {if $data['login']}checked{/if} /> {dr_lang('直接登录')} <span></span></label>
</div>
<span class="help-block">{dr_lang('绑定账号:点击授权登录按钮后会提示账号绑定或者注册账号;直接登录:直接创建一个新账号')}</span>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane {if $page==1}active{/if}" id="tab_1">
<div class="form-body">
</div>
</div>
</div>
</div>
</div>
<div class="portlet-body form myfooter">
<div class="form-actions text-center">
<button type="button" onclick="dr_ajax_submit('{dr_now_url()}&page='+$('#dr_page').val(), 'myform', '2000')" class="btn green"> <i class="fa fa-save"></i> {dr_lang('保存')}</button>
</div>
</div>
</form>
<script type="text/javascript">
function dr_to_token() {
$.get("{dr_url(APP_DIR.'/api/token')}", function(data){
$("#sys_token").val(data);
});
}
function dr_to_aeskey() {
$.get("{dr_url(APP_DIR.'/api/asckey')}", function(data){
$("#sys_asckey").val(data);
});
}
</script>
{template "footer.html"}