[更新]微信菜单增加小程序支持

This commit is contained in:
Anyon 2017-06-16 18:34:17 +08:00
parent 095b306c47
commit 6436925093
2 changed files with 32 additions and 8 deletions

View File

@ -116,13 +116,16 @@ class Menu extends BasicAdmin {
*/
protected function _push() {
$result = Db::name($this->table)
->field('id,index,pindex,name,type,content')
->where('status', '1')
->order('sort ASC,id ASC')
->select();
->field('id,index,pindex,name,type,content')
->where('status', '1')
->order('sort ASC,id ASC')
->select();
foreach ($result as &$row) {
empty($row['content']) && $row['content'] = uniqid();
switch ($row['type']) {
case 'miniprogram':
list($row['appid'], $row['pagepath']) = explode(',', $row['content']);
break;
case 'view':
$row['url'] = preg_match('#^(\w+:)?//#i', $row['content']) ? $row['content'] : url($row['content'], '', true, true);
break;

View File

@ -89,6 +89,9 @@
<label class="col-xs-5 font-noraml">
<input class="cuci-radio" type="radio" name="menu-type" value="event"> 事件功能
</label>
<label class="col-xs-5 font-noraml">
<input class="cuci-radio" type="radio" name="menu-type" value="miniprogram"> 小程序
</label>
<label class="col-xs-5 font-noraml">
<input class="cuci-radio" type="radio" name="menu-type" value="customservice"> 多客服
</label>
@ -232,8 +235,17 @@
$html.find('input[name="menu-type"]').on('click', function () {
$span.attr('data-type', this.value || 'text');
var content = $span.data('content') || '';
var type = this.value;
var html = function () {
switch (this.value) {
switch (type) {
case 'miniprogram':
var tpl = '<div><div>小程序APPID<input style="display:block;margin-bottom:10px" class="form-control input-sm" value="{appid}" name="appid"/></div>Pagepath<textarea style="resize:none;height:180px;" name="pagepath" class="form-control input-sm">{content}</textarea></div>';
var _appid = '', _content = '';
if (content.indexOf(',') > 0) {
_appid = content.split(',')[0];
_content = content.split(',')[1];
}
return tpl.replace('{appid}', _appid).replace('{content}', _content);
case 'customservice':
case 'text':
return '<div>回复内容<textarea style="resize:none;height:225px" name="content" class="form-control input-sm">{content}</textarea></div>'.replace('{content}', content);
@ -262,7 +274,12 @@
}.call(this);
var $html = $(html), $input = $html.find('input,textarea');
$input.on('change keyup click', function () {
$span.data('content', $(this).val() || $(this).html());
// 将input值写入到span上
$span.data(this.name, $(this).val() || $(this).html());
// 如果是小程序合并内容到span的content上
if (type === 'miniprogram') {
$span.data('content', $span.data('appid') + ',' + $span.data('pagepath'));
}
});
$('.editor-content-input').html($html);
}).filter('input[value="{type}"]'.replace('{type}', type)).trigger('click');
@ -274,12 +291,16 @@
*/
menu.prototype.submit = function () {
var data = [];
function getdata($span) {
var menudata = {};
menudata.name = $span.text();
menudata.type = $span.attr('data-type');
menudata.content = $span.data('content') || '';
// 小程序要特殊处理
if (menudata.type === 'miniprogram') {
menudata.content = $span.data('appid') + ',' + $span.data('pagepath');
} else {
menudata.content = $span.data('content') || '';
}
return menudata;
}