homepagePHP/app/Admin/Controller/ConfigController.class.php

281 lines
11 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace Admin\Controller;
use Gy_Library\GyListController;
use Gy_Library\DBCont;
class ConfigController extends GyListController{
public function index($status = DBCont::NORMAL_STATUS){
// 搜索
$keyword = I('keyword', '', 'string');
$condition = array('like','%'.$keyword.'%');
$group_list = C('CONFIG_GROUP_LIST');
if(in_array($keyword, $group_list)){
$flip_group_list = array_flip($group_list);
$map['name|title|group'] = array(
$condition,
$condition,
$flip_group_list[$keyword],
'_multi'=>true
);
}
else{
$map['name|title'] = array(
$condition,
$condition,
'_multi'=>true
);
}
$map['status'] = $status;
$config_model = D('Config');
$count = $config_model->getListForCount($map);
$per_page = C('ADMIN_PER_PAGE_NUM', null, false);
if($per_page === false){
$page = new \Gy_Library\GyPage($count);
}
else{
$page = new \Gy_Library\GyPage($count, $per_page);
}
$data_list = $config_model->getListForPage($map, $page->nowPage, $page->listRows, 'sort desc');
$form_type = C('FORM_ITEM_TYPE');
foreach ($data_list as &$v){
$v['group'] = $group_list[$v['group']];
$v['type'] = $form_type[$v['type']][0];
}
// 设置Tab导航数据列表
$user_status_list = DBCont::getStatusList();
foreach ($user_status_list as $key => $val) {
$tab_list[$key]['title'] = $val;
$tab_list[$key]['href'] = U('index', array('status' => $key));
}
// 使用Builder快速建立列表页面。
$builder = new \Qscmf\Builder\ListBuilder();
$builder = $builder->setMetaTitle('配置管理') // 设置页面标题
->addTopButton('addnew'); // 添加新增按钮
switch($status){
case DBCont::NORMAL_STATUS;
$builder = $builder->addTopButton('forbid'); // 添加禁用按钮
break;
case DBCont::FORBIDDEN_STATUS;
$builder = $builder->addTopButton('resume'); // 添加启用按钮
break;
default:
break;
}
$builder->addTopButton('delete') // 添加删除按钮
->setNID(61)
->setTabNav($tab_list, $status) // 设置页面Tab导航
->addTableColumn('id', 'ID')
->addTableColumn('name', '配置名称')
->addTableColumn('title', '标题')
->addTableColumn('group', '分组')
->addTableColumn('type', '类型')
->addTableColumn('right_button', '操作', 'btn')
->setTableDataList($data_list) // 数据列表
->setTableDataPage($page->show()) // 数据列表分页
->addRightButton('edit') // 添加编辑按钮
->addRightButton('forbid') // 添加禁用/启用按钮
->addRightButton('delete') // 添加删除按钮
->display();
}
public function forbid(){
$ids = I('ids');
if(!$ids){
$this->error('请选择要禁用的数据');
}
$r = parent::_forbid($ids);
if($r !== false){
sysLogs('配置项id: ' . $ids . ' 禁用');
S('DB_CONFIG_DATA', null);
$this->success('禁用成功', U(CONTROLLER_NAME . '/index'));
}
else{
$this->error($this->_getError());
}
}
public function resume(){
$ids = I('ids');
if(!$ids){
$this->error('请选择要启用的数据');
}
$r = parent::_resume($ids);
if($r !== false){
sysLogs('配置项id: ' . $ids . ' 启用');
S('DB_CONFIG_DATA', null);
$this->success('启用成功', U(CONTROLLER_NAME . '/index'));
}
else{
$this->error($this->_getError());
}
}
public function delete(){
$ids = I('ids');
if(!$ids){
$this->error('请选择要删除的数据');
}
$r = parent::_del($ids);
if($r === false){
$this->error($this->_getError());
}
else{
sysLogs('删除配置项id' . $ids);
S('DB_CONFIG_DATA', null);
$this->success('删除成功', U(MODULE_NAME . '/' . CONTROLLER_NAME . '/index'));
}
}
public function add(){
if (IS_POST) {
parent::autoCheckToken();
$data = I('post.');
$config_model = D('Config');
$r = $config_model->createAdd($data);
if($r === false){
$this->error($config_model->getError());
}
else{
sysLogs('新增配置项ID:' . $r);
S('DB_CONFIG_DATA', null);
$this->success('新增成功', U(CONTROLLER_NAME . '/index'));
}
}
else {
// 使用FormBuilder快速建立表单页面。
$type_list = C('FORM_ITEM_TYPE');
foreach($type_list as $key => $type){
$type_options[$key] = $type[0];
}
$group_options = C('CONFIG_GROUP_LIST');
$builder = new \Qscmf\Builder\FormBuilder();
$builder->setMetaTitle('新增配置') //设置页面标题
->setNID(61)
->setPostUrl(U('add')) //设置表单提交地址
->addFormItem('name', 'text', '配置名称', '用于C函数调用只能使用英文+下划线且不能重复')
->addFormItem('title', 'text', '配置标题', '用于后台显示的配置标题')
->addFormItem('sort', 'text', '排序', '显示顺序')
->addFormItem('type', 'select', '配置类型', '系统会根据不同类型解析配置值', $type_options)
->addFormItem('group', 'select', '配置分组', '配置信息的分组|不分组则不会显示该配置项', $group_options)
->addFormItem('value', 'textarea', '配置值')
->addFormItem('extra', 'textarea', '配置项', '只有当配置类型为复选框、下拉框、单选按钮时需要填写')
->addFormItem('remark', 'textarea', 'tips', '配置项说明提示')
->display();
}
}
public function edit($id){
if (IS_POST) {
parent::autoCheckToken();
$data = I('post.');
$config_model = D('Config');
$r = $config_model->createSave($data);
if($r === false){
$this->error($config_model->getError());
}
else{
sysLogs('修改配置项ID:' . $id);
S('DB_CONFIG_DATA', null);
$this->success('修改成功', U('index'));
}
} else {
// 使用FormBuilder快速建立表单页面。
$type_list = C('FORM_ITEM_TYPE');
foreach($type_list as $key => $type){
$type_options[$key] = $type[0];
}
$group_options = C('CONFIG_GROUP_LIST');
$form_data = D('Config')->getOne($id);
$builder = new \Qscmf\Builder\FormBuilder();
$builder->setMetaTitle('编辑配置') //设置页面标题
->setNID(61)
->setPostUrl(U('edit')) //设置表单提交地址
->addFormItem('id', 'hidden', 'ID')
->addFormItem('name', 'text', '配置名称', '用于C函数调用只能使用英文+下划线且不能重复')
->addFormItem('title', 'text', '配置标题', '用于后台显示的配置标题')
->addFormItem('sort', 'text', '排序', '显示顺序')
->addFormItem('type', 'select', '配置类型', '系统会根据不同类型解析配置值', $type_options)
->addFormItem('group', 'select', '配置分组', '配置信息的分组|不分组则不会显示该配置项', $group_options)
->addFormItem('value', 'textarea', '配置值')
->addFormItem('extra', 'textarea', '配置项', '只有当配置类型为复选框、下拉框、单选按钮时需要填写')
->addFormItem('remark', 'textarea', 'tips', '配置项说明提示')
->setFormData($form_data)
->display();
}
}
public function setting($group = 1){
$config = new \Common\Model\ConfigModel();
if(!empty($_POST)){
$conf_arr = I('config');
if($conf_arr && is_array($conf_arr)){
foreach ($conf_arr as $name => $value) {
$r = $config->updateConfig($name, $value);
if($r === false){
$this->error($config->getError());
}
}
S('DB_CONFIG_DATA', null);
sysLogs('修改系统配置');
$this->success('修改配置成功', U(CONTROLLER_NAME . '/setting'));
}
}else{
$group_list = C('CONFIG_GROUP_LIST');
foreach($group_list as $key => $val){
$tab_list[$key]['title'] = $val;
$tab_list[$key]['href'] = U('setting', array('group' => $key));
}
$map['status'] = DBCont::NORMAL_STATUS;
$map['group'] = $group;
$data_list = $config->getConfigList($map);
// 使用FormBuilder快速建立表单页面。
$builder = new \Qscmf\Builder\FormBuilder();
$form_data = array();
foreach($data_list as $data){
if(in_array($data['type'], ['file', 'ueditor'])){
$builder->addFormItem('config[' . $data['name'] . ']', $data['type'], $data['title'], $data['remark'], '', '', $data['extra']);
}
else{
$builder->addFormItem('config[' . $data['name'] . ']', $data['type'], $data['title'], $data['remark'], parse_config_attr($data['extra']));
}
$form_data['config[' . $data['name'] . ']'] = $data['value'];
}
$builder->setMetaTitle('系统设置') // 设置页面标题
->setNID(69)
->SetTabNav($tab_list, $group) // 设置Tab按钮列表
->setFormData($form_data)
->setPostUrl(U('setting')) // 设置表单提交地址
//->setExtraItems($data_list) // 直接设置表单数据
->display();
}
}
}