196 lines
6.3 KiB
PHP
196 lines
6.3 KiB
PHP
<?php namespace Phpcmf\Controllers\Admin;
|
|
|
|
// 自定义菜单
|
|
class Menu extends \Phpcmf\Table
|
|
{
|
|
private $menu_type;
|
|
private $gid;
|
|
private $plugin;
|
|
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
// 支持附表存储
|
|
$this->is_data = 0;
|
|
// 表单显示名称
|
|
$this->name = dr_lang('微信自定义菜单');
|
|
$this->gid = intval($_GET['gid']);
|
|
// 初始化数据表
|
|
$this->_init([
|
|
'table' => weixin_wxtable('menu'),
|
|
'where_list' => 'gid='.$this->gid,
|
|
'order_by' => 'displayorder asc,id asc',
|
|
]);
|
|
$this->menu_type = [
|
|
'view' => '网页地址',
|
|
'login' => '登录认证',
|
|
'click' => '小插件',
|
|
'miniprogram' => '小程序',
|
|
'article_view_limited' => '跳转图文',
|
|
];
|
|
$local = dr_dir_map(APPPATH.'Plugins', 1);
|
|
$this->plugin = [];
|
|
if ($local) {
|
|
foreach ($local as $dir) {
|
|
if (is_file(APPPATH.'Plugins/'.$dir.'/App.php')) {
|
|
$key = strtolower($dir);
|
|
$cfg = require APPPATH.'Plugins/'.$dir.'/App.php';
|
|
$this->plugin[$key] = [
|
|
'name' => $cfg['name'],
|
|
'value' => 'App::'.$key,
|
|
];
|
|
}
|
|
}
|
|
}
|
|
|
|
$menu = [
|
|
WEIXIN_MORE_NAME.'自定义菜单' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/index{gid='.$this->gid.'}', 'fa fa-list'],
|
|
'添加' => [APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/add{gid='.$this->gid.'}', 'fa fa-plus', null, '33%'],
|
|
'修改' => ['hide:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/edit{gid='.$this->gid.'}', 'fa fa-edit'],
|
|
];
|
|
if (!$this->gid) {
|
|
$menu['从服务端获取菜单'] = ['ajax:'.APP_DIR.'/'.\Phpcmf\Service::L('Router')->class.'/down_add', 'fa fa-refresh'];
|
|
}
|
|
|
|
\Phpcmf\Service::V()->assign([
|
|
'gid' => $this->gid,
|
|
'menu' => \Phpcmf\Service::M('auth')->_admin_menu($menu),
|
|
'plugin' => $this->plugin,
|
|
'menu_type' => $this->menu_type,
|
|
'menu_top' => \Phpcmf\Service::M('User', APP_DIR)->top_menu(),
|
|
]);
|
|
}
|
|
|
|
public function down_add() {
|
|
$rt = \Phpcmf\Service::M('User', APP_DIR)->down_menu();
|
|
$rt['code'] ? $this->_json(1, '操作成功') : $this->_json(0, $rt['msg']);
|
|
}
|
|
|
|
public function sync_index() {
|
|
$rt = \Phpcmf\Service::M('User', APP_DIR)->sync_menu();
|
|
$rt['code'] ? $this->_json(1, '操作成功') : $this->_json(0, $rt['msg']);
|
|
}
|
|
|
|
public function displayorder_edit() {
|
|
|
|
$id = (int)\Phpcmf\Service::L('Input')->get('id');
|
|
$row = \Phpcmf\Service::M()->table(weixin_wxtable('menu'))->get($id);
|
|
if (!$row) {
|
|
$this->_json(0, dr_lang('数据#%s不存在', $id));
|
|
}
|
|
|
|
$value = (int)\Phpcmf\Service::L('Input')->get('value');
|
|
$rt = \Phpcmf\Service::M()->table(weixin_wxtable('menu'))->save($id, 'displayorder', $value);
|
|
if (!$rt['code']) {
|
|
$this->_json(0, $rt['msg']);
|
|
}
|
|
|
|
$this->_json(1, dr_lang('操作成功'));
|
|
}
|
|
|
|
public function index() {
|
|
|
|
list($tpl, $data) = $this->_list([], -1);
|
|
$list = [];
|
|
if ($data['list']) {
|
|
foreach ($data['list'] as $t) {
|
|
if ($t['pid'] == 0) {
|
|
$list[$t['id']] = $t;
|
|
foreach ($data['list'] as $tt) {
|
|
if ($tt['pid'] == $t['id']) {
|
|
$list[$tt['id']] = $tt;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
\Phpcmf\Service::V()->assign('list', $list);
|
|
\Phpcmf\Service::V()->assign('is_ajax', 0);
|
|
\Phpcmf\Service::V()->display($tpl);
|
|
}
|
|
|
|
public function add() {
|
|
list($tpl) = $this->_Post();
|
|
\Phpcmf\Service::V()->assign('pid', $_GET['pid']);
|
|
$this->_get_data();
|
|
\Phpcmf\Service::V()->display($tpl);exit;
|
|
}
|
|
|
|
public function edit() {
|
|
|
|
$id = intval(\Phpcmf\Service::L('Input')->get('id'));
|
|
list($tpl, $data) = $this->_Post($id);
|
|
|
|
if (!$data) {
|
|
$this->_admin_msg(0, dr_lang('菜单#%s不存在', $id));
|
|
}
|
|
if (!$data['pid'] && !$data['type']) {
|
|
$tpl = 'menu_post_ajax.html';
|
|
}
|
|
|
|
if ($this->gid != $data['gid']) {
|
|
$this->_admin_msg(0, dr_lang('菜单#%s不属于当前组', $id));
|
|
}
|
|
|
|
$this->_get_data();
|
|
|
|
\Phpcmf\Service::V()->display($tpl);exit;
|
|
}
|
|
|
|
private function _get_data() {
|
|
|
|
\Phpcmf\Service::V()->assign([
|
|
'view_url' => [
|
|
[
|
|
'name' => '用户中心',
|
|
'value' => 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$this->weixin['account']['appid'].'&redirect_uri='.urlencode(SITE_URL.'index.php?s=weixin&c=member').'&response_type=code&scope=snsapi_base&state=member#wechat_redirect',
|
|
],
|
|
],
|
|
'twsc' => \Phpcmf\Service::M()->table(weixin_wxtable('content'))->where('article_id<>""')->order_by('inputtime desc')->getAll(50),
|
|
]);
|
|
}
|
|
|
|
// 格式化保存数据
|
|
protected function _Format_Data($id, $data, $old) {
|
|
|
|
if (!$data['name']) {
|
|
$this->_json(0, '菜单名称必须填写', ['field' => 'name']);
|
|
}
|
|
|
|
$data['name'] = dr_emoji2html($data['name']);
|
|
$data['value'] = is_array($_POST['value_'.$data['type']]) ? dr_array2string($_POST['value_'.$data['type']]) : (string)$_POST['value_'.$data['type']];
|
|
|
|
if (!$id) {
|
|
$data['menuid'] = 0;
|
|
$data['displayorder'] = 0;
|
|
}
|
|
|
|
$data['gid'] = $this->gid;
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* 获取内容
|
|
* $id 内容id,新增为0
|
|
* */
|
|
protected function _Data($id = 0) {
|
|
$data = parent::_Data($id);
|
|
if ($data['type'] == 'miniprogram') {
|
|
$data['value'] = dr_string2array($data['value']);
|
|
}
|
|
return $data;
|
|
}
|
|
|
|
public function del() {
|
|
$this->_Del(
|
|
\Phpcmf\Service::L('Input')->get_post_ids(),
|
|
null,
|
|
null,
|
|
\Phpcmf\Service::M()->dbprefix($this->init['table'])
|
|
);
|
|
}
|
|
|
|
}
|