301 lines
12 KiB
PHP
301 lines
12 KiB
PHP
<?php
|
|
|
|
namespace Admin\Controller;
|
|
|
|
use Gy_Library\GyListController;
|
|
use Gy_Library\DBCont;
|
|
|
|
use Qscmf\Builder\FormBuilder;
|
|
use Qscmf\Builder\ListBuilder;
|
|
|
|
use Qscmf\Builder\TSubBuilder;
|
|
|
|
/*
|
|
* 关键词
|
|
*/
|
|
|
|
class SecondaryTitleController extends GyListController
|
|
{
|
|
use TSubBuilder;
|
|
|
|
private $belong_to = ['报道媒体', '报道类型'];
|
|
public function index()
|
|
{
|
|
$map = [];
|
|
$get_data = I('get.');
|
|
if (isset($get_data['key']) && $get_data['word']) {
|
|
$map[$get_data['key']] = array('like', '%' . $get_data['word'] . '%');
|
|
}
|
|
|
|
$model = D('SecondaryTitle');
|
|
$count = $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);
|
|
}
|
|
$order = 'sort asc,id desc';
|
|
$data_list = $model->getListForPage($map, $page->nowPage, $page->listRows, $order);
|
|
foreach ($data_list as &$data) {
|
|
$s_news = $model->getConditionList($data['id']);
|
|
if ($s_news) {
|
|
$data['news'] = empty(trim($s_news['news_id'])) ? "" : "共 " . count(explode(',', $s_news['news_id'])) . " 条";
|
|
$data['keywords'] = cutLength($model->extraKeyword($s_news['keywords_id']), 25);
|
|
$data['cates'] = cutLength($model->extraCate($s_news['cate_id']), 25);
|
|
}
|
|
}
|
|
// 使用Builder快速建立列表页面。
|
|
$builder = new ListBuilder();
|
|
|
|
$builder = $builder->setMetaTitle('搜索关键词管理'); // 设置页面标题
|
|
$builder->addTopButton('addnew');
|
|
// $builder->addTopButton('save', array('title' => '保存排序'));
|
|
$builder
|
|
->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index')
|
|
->addSearchItem('title', 'select_text', '单行输入', array('name' => '名称'))
|
|
->addTableColumn('belong_to', '选项')
|
|
->addTableColumn('name', '名称')
|
|
->addTableColumn('news', '新闻列表')
|
|
->addTableColumn('keywords', '关键词列表')
|
|
->addTableColumn('cates', '分类列表')
|
|
->addTableColumn('sort', '排序', '', '', false)
|
|
->addTableColumn('status', '状态', 'status', '', false)
|
|
->addTableColumn('right_button', '操作', 'btn')
|
|
->setTableDataList($data_list) // 数据列表
|
|
->setTableDataPage($page->show()) // 数据列表分页
|
|
->addRightButton('edit') // 添加编辑按钮
|
|
->addRightButton('delete') // 添加删除按钮
|
|
->addRightButton('forbid') // 添加禁用按钮
|
|
// ->addRightButton('self', ['title' => '查看相关文章', 'href' => U('News/index', ['key' => 'keyword', 'word' => '__name__']), 'class' => 'label label-success'])
|
|
->display();
|
|
}
|
|
|
|
public function add()
|
|
{
|
|
if (IS_POST) {
|
|
parent::autoCheckToken();
|
|
$data = I('post.');
|
|
$data['name'] = trim($data['name']);
|
|
$data['belong_to'] = $this->belong_to[$data['belong_to']];
|
|
$model = D('SecondaryTitle');
|
|
$n_model = D('SecondaryNews');
|
|
$keyword_ids = D('Keywords')->checkKeywords($data['keywords_id'] ? $data['keywords_id'] : []);
|
|
if ($keyword_ids === false) {
|
|
$this->error(D('Keywords')->getError());
|
|
}
|
|
$data['keywords_id'] = implode(',', $keyword_ids ? $keyword_ids : []);
|
|
$data['news_id'] = implode(',', $data['news_id'] ? $data['news_id'] : []);
|
|
$data['cate_id'] = implode(',', $data['cate_id'] ? $data['cate_id'] : []);
|
|
$r = $model->createAdd($data);
|
|
if ($r === false) {
|
|
$this->error($model->getError());
|
|
} else {
|
|
$data['secondary_id'] = $r;
|
|
$n_r = $n_model->createAdd($data);
|
|
if ($n_r === false) {
|
|
$this->error($n_model->getError());
|
|
}
|
|
sysLogs('新增关键词id:' . $r);
|
|
$this->success(l('add') . l('success'), U(CONTROLLER_NAME . '/index'));
|
|
}
|
|
} else {
|
|
// 使用FormBuilder快速建立表单页面。
|
|
$builder = new FormBuilder();
|
|
$data_list = array(
|
|
"status" => 1,
|
|
"sort" => 0,
|
|
);
|
|
if ($data_list) {
|
|
$builder->setFormData($data_list);
|
|
}
|
|
|
|
$keywordBuilder = new \Qscmf\Builder\SubTableBuilder();
|
|
$keywordBuilder->addTableHeader('关键词', '30%', '输入关键词可以搜索添加现有关键词,输入@+关键词可以新增');
|
|
$keywordBuilder->addFormItem('keywords_id', 'select2', [
|
|
'tags' => true,
|
|
'options' => D('Keywords')->order('id desc')->getField('id, name', true)
|
|
]);
|
|
|
|
$newsBuilder = new \Qscmf\Builder\SubTableBuilder();
|
|
$newsBuilder->addTableHeader('新闻列表', '30%', '输入新闻可以搜索添加现有新闻');
|
|
$newsBuilder->addFormItem('news_id', 'select2', [
|
|
'tags' => true,
|
|
'options' => D('News')->order('id desc')->getField('id, title', true)
|
|
]);
|
|
|
|
$cates = D('NewsCate')->order('id asc')->getField('id, name', true);
|
|
|
|
$builder->setMetaTitle('添加关键词') //设置页面标题
|
|
->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index')
|
|
->setPostUrl(U('add'))
|
|
->addFormItem('belong_to', 'radio', '选项', '', $this->belong_to)
|
|
->addFormItem('name', 'text', '名称*')
|
|
->addFormItem('news_id', 'self', '新闻列表', '', $newsBuilder->makeHtml())
|
|
->addFormItem('keywords_id', 'self', '关键词', '', $keywordBuilder->makeHtml())
|
|
->addFormItem('cate_id', 'checkbox', '分类', '', $cates)
|
|
->addFormItem('sort', 'num', '排序')
|
|
->addFormItem('status', 'select', '状态', '', DBCont::getStatusList())
|
|
->display();
|
|
}
|
|
}
|
|
|
|
|
|
public function save()
|
|
{
|
|
if (IS_POST) {
|
|
$data = I('post.');
|
|
foreach ($data['id'] as $k => $v) {
|
|
$save_data['sort'] = $data['sort'][$k];
|
|
D('Keywords')->where('id=' . $v)->save($save_data);
|
|
}
|
|
$this->success('保存成功', U('index'));
|
|
}
|
|
}
|
|
|
|
public function edit($id)
|
|
{
|
|
if (IS_POST) {
|
|
parent::autoCheckToken();
|
|
$m_id = I('post.id');
|
|
$data = I('post.');
|
|
$data['name'] = trim($data['name']);
|
|
$data['belong_to'] = $this->belong_to[$data['belong_to']];
|
|
$model = D('SecondaryTitle');
|
|
if (!$m_id) {
|
|
E('缺少内容ID');
|
|
}
|
|
$ent = $model->getOne($m_id);
|
|
if (!$ent) {
|
|
E('不存在内容');
|
|
}
|
|
|
|
$keyword_ids = D('Keywords')->checkKeywords($data['keywords_id'] ? $data['keywords_id'] : []);
|
|
if ($keyword_ids === false) {
|
|
$this->error(D('Keywords')->getError());
|
|
}
|
|
$data['keywords_id'] = implode(',', $keyword_ids ? $keyword_ids : []);
|
|
$data['news_id'] = implode(',', $data['news_id'] ? $data['news_id'] : []);
|
|
$data['cate_id'] = implode(',', $data['cate_id'] ? $data['cate_id'] : []);
|
|
|
|
$n_model = D('SecondaryNews');
|
|
$news_ent = $n_model->where(['secondary_id' => $data['id']])->find();
|
|
// todo 保存关联表
|
|
// dd($data, $data['id'], $ent['id'], $news_ent);
|
|
|
|
if ($data['keywords_id']) {
|
|
$news_ent['keywords_id'] = $data['keywords_id'];
|
|
}
|
|
if ($data['news_id']) {
|
|
$news_ent['news_id'] = $data['news_id'];
|
|
}
|
|
if ($data['cate_id']) {
|
|
$news_ent['cate_id'] = $data['cate_id'];
|
|
}
|
|
$ent['name'] = $data['name'];
|
|
$ent['sort'] = $data['sort'];
|
|
$ent['belong_to'] = $data['belong_to'];
|
|
$ent['status'] = $data['status'];
|
|
if ($model->createSave($ent) === false || $n_model->createSave($news_ent) === false) {
|
|
$this->error($model->getError());
|
|
} else {
|
|
$this->success('修改成功', U('index'));
|
|
}
|
|
} else {
|
|
$model = D('SecondaryTitle');
|
|
$info = $model->getOne($id);
|
|
$is_belong_to_in_list = in_array($info['belong_to'], $this->belong_to);
|
|
$info['belong_to'] = array_search($info['belong_to'], $this->belong_to);
|
|
|
|
$s_news = $model->getConditionList($info['id']);
|
|
if ($s_news) {
|
|
$info['news_id'] = $s_news['news_id'];
|
|
$info['keywords_id'] = $s_news['keywords_id'];
|
|
$info['cate_id'] = $s_news['cate_id'];
|
|
}
|
|
|
|
$keywordBuilder = new \Qscmf\Builder\SubTableBuilder();
|
|
$keywordBuilder->setData(D('Keywords')->genKeywordId($info['keywords_id']));
|
|
$keywordBuilder->addTableHeader('关键词', '30%', '输入关键词可以搜索添加现有关键词,输入@+关键词可以新增');
|
|
$keywordBuilder->addFormItem('keywords_id', 'select2', [
|
|
'tags' => true,
|
|
'options' => D('Keywords')->order('id desc')->getField('id, name', true)
|
|
]);
|
|
|
|
$newsBuilder = new \Qscmf\Builder\SubTableBuilder();
|
|
$newsBuilder->setData(D('News')->genNewsId($info['news_id']));
|
|
$newsBuilder->addTableHeader('新闻列表', '30%', '输入新闻可以搜索添加现有新闻');
|
|
$newsBuilder->addFormItem('news_id', 'select2', [
|
|
'tags' => true,
|
|
'options' => D('News')->order('id desc')->getField('id, title', true)
|
|
]);
|
|
|
|
$cates = D('NewsCate')->order('id asc')->getField('id, name', true);
|
|
|
|
$builder = new FormBuilder();
|
|
$builder->setMetaTitle('编辑关键词')
|
|
->setPostUrl(U('edit'))
|
|
// ->setExtraHtml($this->fetch('Keywords/detail'))
|
|
->setNIDByNode(MODULE_NAME, CONTROLLER_NAME, 'index')
|
|
->addFormItem('id', 'hidden', 'ID');
|
|
if ($is_belong_to_in_list) {
|
|
$builder
|
|
->addFormItem('belong_to', 'radio', '选项', '', $this->belong_to)
|
|
->addFormItem('name', 'text', '名称')
|
|
->addFormItem('news_id', 'self', '新闻列表', '', $newsBuilder->makeHtml())
|
|
->addFormItem('keywords_id', 'self', '关键词', '', $keywordBuilder->makeHtml())
|
|
->addFormItem('cate_id', 'checkbox', '分类', '', $cates);
|
|
}
|
|
$builder
|
|
->addFormItem('sort', 'num', '排序', '', $info['sort'])
|
|
->addFormItem('status', 'select', '状态', '', DBCont::getStatusList())
|
|
->setFormData($info)
|
|
->display();
|
|
}
|
|
}
|
|
|
|
public function forbid()
|
|
{
|
|
$ids = I('ids');
|
|
if (!$ids) {
|
|
$this->error('请选择要禁用的数据');
|
|
}
|
|
$r = parent::_forbid($ids);
|
|
if ($r !== false) {
|
|
// sysLogs('新闻分类id: ' . $ids . ' 禁用');
|
|
$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) {
|
|
$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 {
|
|
$this->success('删除成功', U(MODULE_NAME . '/' . CONTROLLER_NAME . '/index'));
|
|
}
|
|
}
|
|
}
|