<?php namespace Phpcmf\Admin;
class Category extends \Phpcmf\Table
{
public $module; public $is_scategory;
public function __construct(...$params) {
parent::__construct(...$params);
$dir = APP_DIR ? APP_DIR : 'share';
$this->_module_init($dir);
$this->is_data = 0;
$this->tpl_prefix = 'share_category_';
$this->tpl_name = 'category_content';
$this->name = dr_lang('内容模块[%s]', $dir);
$this->is_scategory = $this->module['share'] || (isset($this->module['config']['scategory']) && $this->module['config']['scategory']);
if ($this->is_scategory) {
if ($this->module['share'] && $dir != 'share') {
dr_redirect(dr_url('category/index'));
}
} else {
unset($this->module['category_field']['content']);
if (isset($this->module['config']['hcategory']) && $this->module['config']['hcategory']) {
$this->_admin_msg(0, dr_lang('模块【%s】禁止使用栏目', $dir));
}
}
$this->_init([
'table' => SITE_ID.'_'.$dir.'_category',
'field' => $this->module['category_field'],
'show_field' => 'name',
'order_by' => 'displayorder ASC,id ASC',
]);
\Phpcmf\Service::M('Category')->init($this->init);
\Phpcmf\Service::V()->assign([
'module' => $this->module,
'post_url' => \Phpcmf\Service::L('Router')->url(APP_DIR.'/category/add'),
'field_url' => \Phpcmf\Service::L('router')->url('field/index', ['rname' => 'category-'.$this->module['dirname']]),
'post_all_url' => \Phpcmf\Service::L('Router')->url(APP_DIR.'/category/all_add'),
'is_scategory' => $this->is_scategory,
]);
}
protected function _get_tree_list($data) {
$tree = [];
foreach($data as $t) {
!$t['mid'] && $t['mid'] = APP_DIR;
$t['name'] = dr_strcut($t['name'], 30);
$t['child'] = $t['pcatpost'] ? 0 : $t['child'];
$t['setting'] = dr_string2array($t['setting']);
$option = '';
$t['tid'] = isset($t['tid']) ? $t['tid'] : 1;
if ($t['tid'] != 2 && $this->_is_admin_auth('add')) {
$option.= '<a class="btn btn-xs btn-default" href='.\Phpcmf\Service::L('Router')->url(APP_DIR.'/category/add', array('pid' => $t['id'])).'> <i class="fa fa-plus"></i> '.dr_lang('子类').'</a>';
}
if ($this->_is_admin_auth('edit')) {
$option.= '<a class="btn btn-xs btn-primary" href='.\Phpcmf\Service::L('Router')->url(APP_DIR.'/category/edit', array('id' => $t['id'])).'> <i class="fa fa-edit"></i> '.dr_lang('修改').'</a>';
}
if (($t['tid'] == 1 && !$t['child'] && $t['mid']) && $this->_is_admin_auth($t['mid'].'/home/add')) {
$option.= '<a class="btn btn-xs dark" href='.\Phpcmf\Service::L('Router')->url($t['mid'].'/home/add', array('catid' => $t['id'])).'> <i class="fa fa-plus"></i> '.dr_lang('发布').'</a>';
}
if (($t['tid'] == 1 && $t['mid']) && $this->_is_admin_auth($t['mid'].'/home/index')) {
$option.= '<a class="btn btn-xs btn-default" href='.\Phpcmf\Service::L('Router')->url($t['mid'].'/home/index', array('catid' => $t['id'])).'> <i class="fa fa-th-large"></i> '.dr_lang('管理').'</a>';
}
if ($this->_is_admin_auth('edit') && ($t['tid'] == 0 && $this->is_scategory)) {
$option.= '<a class="btn btn-xs dark" href="javascript:dr_page_content('.$t['id'].');"> <i class="fa fa-edit"></i> '.dr_lang('编辑内容').'</a>';
}
if ($this->_is_admin_auth('edit') && ($t['tid'] == 2 && $this->is_scategory)) {
$option.= '<a class="btn btn-xs dark" href="javascript:dr_link_url('.$t['id'].');"> <i class="fa fa-edit"></i> '.dr_lang('编辑地址').'</a>';
}
$t['option'] = $option;
$t['is_show_html'] = '<a href="javascript:;" onclick="dr_cat_ajax_show_open_close(this, \''.\Phpcmf\Service::L('Router')->url(APP_DIR.'/category/show_edit', ['id'=>$t['id']]).'\', 0);" class="badge badge-'.(!$t['show'] ? 'no' : 'yes').'"><i class="fa fa-'.(!$t['show'] ? 'times' : 'check').'"></i></a>';
$is_html = intval($this->module['share'] ? $t['setting']['html'] : $this->module['html']);
$t['is_page_html'] = '<a href="javascript:;" onclick="dr_cat_ajax_open_close(this, \''.\Phpcmf\Service::L('Router')->url(APP_DIR.'/category/html_edit', ['id'=>$t['id']]).'\', 0);" class="dr_is_page_html badge badge-'.(!$is_html ? 'no' : 'yes').'"><i class="fa fa-'.(!$is_html ? 'times' : 'check').'"></i></a>';
$purl = $this->module['share'] ? ($t['tid'] == 1 ? dr_url($t['mid'].'/home/index', ['catid'=>$t['id']]) : \Phpcmf\Service::L('Router')->url(APP_DIR.'/category/edit', array('id' => $t['id']))) : dr_url(APP_DIR.'/home/index', ['catid'=>$t['id']]);
$t['total'] = '<a href="'.$purl.'">'.intval($this->module['category'][$t['id']]['total']).'</a>';
if ($this->module['category'][$t['id']]) {
$t['url'] = dr_url_prefix($this->module['category'][$t['id']]['url'], APP_DIR);
if ($this->is_scategory) {
if ($t['tid'] == 1) {
$t['type_html'] = '<span class="badge badge-primary"> '.dr_lang('模块').' </span>';
} elseif ($t['tid'] == 2) {
$t['type_html'] = '<span class="badge badge-warning"> '.dr_lang('外链').' </span>';
$t['is_page_html'] = '';
$t['mid'] = '';
} else {
$t['mid'] = '';
$t['type_html'] = '<span class="badge badge-success"> '.dr_lang('单页').' </span>';
}
!$t['mid'] && $t['mid'] = '<span class="label label-sm label-danger circle">'.dr_lang('无').'</span>';
}
} else {
$t['name'].= ' <span class="label label-sm label-danger circle">'.dr_lang('请更新缓存').'</span>';
$t['url'] = 'javascript:;';
$t['tid'] = 0;
$t['mid'] = '';
$t['type_html'] = '';
$t['is_page_html'] = '';
}
$tree[$t['id']] = $t;
}
$str = "<tr class='\$class'>";
$str.= "<td class='myselect'>
<label class='mt-table mt-table mt-checkbox mt-checkbox-single mt-checkbox-outline'>
<input type='checkbox' class='checkboxes' name='ids[]' value='\$id' />
<span></span>
</label>
</td>";
$str.= "<td style='text-align:center'> <input type='text' onblur='dr_cat_ajax_save(this.value, \$id)' value='\$displayorder' class='displayorder form-control input-sm input-inline input-mini'> </td>";
$str.= "<td style='text-align:center'>\$is_show_html</td>";
$str.= "<td style='text-align:center'>\$id</td>";
$str.= "<td>\$spacer<a target='_blank' href='\$url'>\$name</a> \$parent</td>";
if ($this->is_scategory) {
$str.= "<td style='text-align:center'>\$type_html</td>";
}
if ($this->module['share']) {
$str.= "<td style='text-align:center'>\$mid</td>";
}
$str.= "<td style='text-align:center'>\$total</td>";
$str.= "<td style='text-align:center'>\$is_page_html</td>";
$str.= "<td>\$option</td>";
$str.= "</tr>";
return \Phpcmf\Service::L('Tree')->init($tree)->html_icon()->get_tree(0, $str);
}
protected function _Admin_List() {
list($tpl, $data) = $this->_List([], -1);
$category = \Phpcmf\Service::M('Category')->repair($data['list']);
\Phpcmf\Service::V()->assign([
'list' => $this->_get_tree_list($category),
'list_url' =>\Phpcmf\Service::L('Router')->url(APP_DIR.'/category/index'),
'list_name' => ' <i class="fa fa-reorder"></i> '.dr_lang('栏目管理'),
'move_select' => \Phpcmf\Service::L('Tree')->select_category(
$category,
0,
'name="catid"',
dr_lang('顶级栏目'),
0, 0
),
]);
\Phpcmf\Service::V()->display($tpl);
}
protected function _Admin_Add() {
$id = 0;
$pid = intval(\Phpcmf\Service::L('input')->get('pid'));
$page = intval(\Phpcmf\Service::L('input')->get('page'));
$value = [
'show' => 1,
'setting' => [
'edit' => 1,
'template' => [
'page' => 'page.html',
'list' => 'list.html',
'show' => 'show.html',
'category' => 'category.html',
'search' => 'search.html',
'pagesize' => 10,
'mpagesize' => 10,
],
'seo' => [
'list_title' => '[第{page}页{join}]{catpname}{join}{modname}{join}{SITE_NAME}',
'show_title' => '[第{page}页{join}]{title}{join}{catpname}{join}{modname}{join}{SITE_NAME}',
],
]
];
if ($pid) {
!$this->module['category'][$pid] && $this->_admin_msg(0, dr_lang('栏目【%s】缓存不存在', $pid));
$value['setting'] = $this->module['category'][$pid]['setting'];
}
$value['mid'] = $this->module['category'][$pid]['mid'];
list($tpl) = $this->_Post($id, $value, 1);
\Phpcmf\Service::V()->assign([
'page' => $page,
'data' => $value,
'form' => dr_form_hidden(['page' => $page]),
'select' => \Phpcmf\Service::L('Tree')->select_category($this->module['category'], $pid, 'name=\'data[pid]\'', dr_lang('顶级栏目')),
'list_url' =>\Phpcmf\Service::L('Router')->url(APP_DIR.'/category/index'),
'list_name' => ' <i class="fa fa-reorder"></i> '.dr_lang('栏目管理'),
'is_edit_mid' => $pid && $value['mid'] ? 1 : 0,
'module_share' => \Phpcmf\Service::L('cache')->get('module-'.SITE_ID.'-content'),
]);
\Phpcmf\Service::V()->display($tpl);
}
protected function _Admin_Edit() {
$id = intval(\Phpcmf\Service::L('input')->get('id'));
$page = intval(\Phpcmf\Service::L('input')->get('page'));
list($tpl, $data) = $this->_Post($id, null, 1);
if (!$data['data']) {
$this->_admin_msg(0, dr_lang('数据#%s不存在', $id));
}
\Phpcmf\Service::V()->assign([
'page' => $page,
'form' => dr_form_hidden(['page' => $page]),
'select' => \Phpcmf\Service::L('Tree')->select_category($this->module['category'], $data['data']['pid'], 'name=\'data[pid]\'', dr_lang('顶级栏目')),
'list_url' =>\Phpcmf\Service::L('Router')->url(APP_DIR.'/category/index'),
'list_name' => ' <i class="fa fa-reorder"></i> '.dr_lang('栏目管理'),
'is_edit_mid' => 1,
'module_share' => \Phpcmf\Service::L('cache')->get('module-'.SITE_ID.'-content'),
]);
\Phpcmf\Service::V()->display($tpl);
}
protected function _Admin_All_Add() {
if (IS_AJAX_POST) {
$post = \Phpcmf\Service::L('input')->post('data', true);
$list = explode(PHP_EOL, $post['list']);
if (!$list) {
$this->_json(0, dr_lang('内容填写不完整'));
}
$pid = intval($post['pid']);
if ($pid && !$this->module['category'][$pid]) {
$this->_json(0, dr_lang('栏目【%s】缓存不存在', $pid));
} elseif ($this->module['category'][$pid]['tid'] == 2) {
$this->_json(0, dr_lang('外部地址类型不允许添加子栏目'));
}
$count = 0;
foreach ($list as $t) {
list($name, $dir) = explode('|', $t);
$data = [];
$data['name'] = trim($name);
if (!$data['name']) {
continue;
}
$data['dirname'] = trim($dir);
!$data['dirname'] && $data['dirname'] = \Phpcmf\Service::L('pinyin')->result($data['name']);
\Phpcmf\Service::M('Category')->check_dirname(0, $data['dirname']) && $data['dirname'].= rand(0,99);
$data['pid'] = $pid;
$data['show'] = 1;
$data['thumb'] = '';
$data['pids'] = '';
$data['pdirname'] = '';
$data['childids'] = '';
if ($this->module['share']) {
$data['content'] = '';
$data['tid'] = (int)$post['tid'];
$save['domain'] = '';
$save['mobile_domain'] = '';
$data['mid'] = $post['mid'];
if ($data['tid'] == 1) {
if (!$data['mid']) {
$this->_json(0, dr_lang('必须选择一个模块'));
}
list($pmid, $ids) = \Phpcmf\Service::M('Category')->get_parent_mid($this->module['category'], $pid);
if ($pmid && $pmid != $data['mid']) {
$this->_json(0, dr_lang('必须选择与上级栏目相同的内容模块(%s)', $pmid));
}
}
}
$data['setting'] = dr_array2string(isset($this->module['category'][$pid]['setting']) ? $this->module['category'][$pid]['setting'] : [
'edit' => 1,
'template' => [
'list' => 'list.html',
'show' => 'show.html',
'category' => 'category.html',
'search' => 'search.html',
'pagesize' => 20,
],
'seo' => [
'list_title' => '[第{page}页{join}]{name}{join}{modname}{join}{SITE_NAME}',
'show_title' => '[第{page}页{join}]{title}{join}{catname}{join}{modname}{join}{SITE_NAME}',
],
]);
$rt = \Phpcmf\Service::M('Category')->insert($data);
if (!$rt['code']) {
$this->_json(0, $rt['msg']);
}
$count ++;
}
\Phpcmf\Service::M('cache')->sync_cache();
$this->_json(1, dr_lang('批量添加%s个栏目', $count));
exit;
}
\Phpcmf\Service::V()->assign([
'form' => dr_form_hidden(),
'select' => \Phpcmf\Service::L('Tree')->select_category($this->module['category'], 0, 'name=\'data[pid]\'', dr_lang('顶级栏目')),
'list_url' =>\Phpcmf\Service::L('Router')->url(APP_DIR.'/category/index'),
'list_name' => ' <i class="fa fa-reorder"></i> '.dr_lang('栏目管理'),
'module_share' => \Phpcmf\Service::L('cache')->get('module-'.SITE_ID.'-content'),
]);
\Phpcmf\Service::V()->display('share_category_all.html');
}
protected function _Admin_Url_Edit() {
if (!$this->module['share']) {
$this->_admin_msg(2, dr_lang('独立模块在模块配置中设置URL规则'),\Phpcmf\Service::L('Router')->url('seo_module/show', ['dir' => $this->module['dirname'], 'page' => 2, 'hide_menu' => 1]));
exit;
}
if (IS_AJAX_POST) {
$c = 0;
$catid = \Phpcmf\Service::L('input')->post('catid');
$urlrule = \Phpcmf\Service::L('input')->post('urlrule', true);
foreach ($this->module['category'] as $id => $t) {
if (in_array($id, $catid)) {
$c ++;
$t['setting']['urlrule'] = $urlrule;
\Phpcmf\Service::M('Category')->init($this->init)->update($id, ['setting' => dr_array2string($t['setting'])]);
}
}
\Phpcmf\Service::M('cache')->sync_cache();
$this->_json(1, dr_lang('批量设置%s个栏目', $c));
exit;
}
\Phpcmf\Service::V()->assign([
'form' => dr_form_hidden(),
'select' => \Phpcmf\Service::L('Tree')->select_category($this->module['category'], 0, 'name=\'catid[]\' multiple style=\'height:200px\'', ''),
'list_url' =>\Phpcmf\Service::L('Router')->url(APP_DIR.'/category/url_edit'),
'list_name' => ' <i class="fa fa-link"></i> '.dr_lang('自定义URL'),
]);
\Phpcmf\Service::V()->display('share_category_url.html');
}
protected function _Admin_Del() {
$ids = \Phpcmf\Service::L('input')->get_post_ids();
if (!$ids) {
$this->_json(0, dr_lang('所选栏目不存在'));
}
$category = \Phpcmf\Service::M('Category')->data_for_delete();
$catid = '';
foreach ($ids as $id) {
$catid.= ','.($category[$id]['childids'] ? $category[$id]['childids'] : $id);
}
$catid = explode(',', trim($catid, ','));
$catid = array_flip(array_flip($catid));
parent::_Del(
$catid,
null,
function ($rows) {
\Phpcmf\Service::M('Category')->delete_content($rows, $this->module);
\Phpcmf\Service::M('cache')->sync_cache();
return dr_return_data(1);
},
\Phpcmf\Service::M()->dbprefix($this->init['table'])
);
}
protected function _Admin_Html_All_Edit() {
$ids = \Phpcmf\Service::L('input')->get_post_ids();
if (!$ids) {
$this->_json(0, dr_lang('所选栏目不存在'));
}
foreach ($ids as $id) {
$row = \Phpcmf\Service::M('Category')->init($this->init)->get($id);
if (!$row) {
$this->_json(0, dr_lang('栏目数据不存在'));
}
$row['setting'] = dr_string2array($row['setting']);
$row['setting']['html'] = 1;
\Phpcmf\Service::M('Category')->init($this->init)->update($id, ['setting' => dr_array2string($row['setting'])]);
\Phpcmf\Service::L('input')->system_log('修改栏目状态为: 静态模式 ['. $id.']');
}
\Phpcmf\Service::M('cache')->sync_cache();
$this->_json(1, dr_lang('操作成功'));
}
public function copy_edit() {
$at = \Phpcmf\Service::L('input')->get('at');
$catid = (int)\Phpcmf\Service::L('input')->get('catid');
$row = \Phpcmf\Service::M('Category')->init($this->init)->get($catid);
if (!$row) {
$this->_json(0, dr_lang('栏目数据不存在'));
}
if (IS_AJAX_POST) {
$catids = \Phpcmf\Service::L('input')->post('catid');
if (!$catids) {
$this->_json(0, dr_lang('你还没有选择栏目呢'));
}
$c = 0;
$row['setting'] = dr_string2array($row['setting']);
if (isset($catids[0]) && $catids[0] == 0) {
foreach ($this->module['category'] as $id => $t) {
$c ++;
\Phpcmf\Service::M('Category')->init($this->init)->copy_value($at, $row['setting'], $id);
}
} else {
foreach ($catids as $id) {
$c ++;
\Phpcmf\Service::M('Category')->init($this->init)->copy_value($at, $row['setting'], $id);
}
}
\Phpcmf\Service::M('cache')->sync_cache();
$this->_json(1, dr_lang('共同步到%s个栏目', $c));
exit;
}
\Phpcmf\Service::V()->assign([
'form' => dr_form_hidden(),
'select' => \Phpcmf\Service::L('Tree')->select_category(
$this->module['category'],
0,
'id=\'dr_catid\' name=\'catid[]\' multiple="multiple" style="height:200px"',
dr_lang('全部栏目'),
0,
0
),
]);
\Phpcmf\Service::V()->display('share_category_copy.html');exit;
}
protected function _Admin_Php_All_Edit() {
$ids = \Phpcmf\Service::L('input')->get_post_ids();
if (!$ids) {
$this->_json(0, dr_lang('所选栏目不存在'));
}
foreach ($ids as $id) {
$row = \Phpcmf\Service::M('Category')->init($this->init)->get($id);
if (!$row) {
$this->_json(0, dr_lang('栏目数据不存在'));
}
$row['setting'] = dr_string2array($row['setting']);
$row['setting']['html'] = 0;
\Phpcmf\Service::M('Category')->init($this->init)->update($id, ['setting' => dr_array2string($row['setting'])]);
\Phpcmf\Service::L('input')->system_log('修改栏目状态为: 动态模式 ['. $id.']');
}
\Phpcmf\Service::M('cache')->sync_cache();
$this->_json(1, dr_lang('操作成功'));
}
protected function _Admin_Order() {
$this->_Display_Order(
intval(\Phpcmf\Service::L('input')->get('id')),
intval(\Phpcmf\Service::L('input')->get('value'))
);
}
protected function _Admin_Move_Edit() {
$ids = \Phpcmf\Service::L('input')->get_post_ids();
if (!$ids) {
$this->_json(0, dr_lang('所选栏目不存在'));
}
$topid = (int)\Phpcmf\Service::L('input')->post('catid');
if ($topid) {
$category = \Phpcmf\Service::M('Category')->data_for_move();
if (!$category[$topid]) {
$this->_json(0, dr_lang('目标栏目不存在'));
} elseif ($this->is_scategory && $category[$topid]['child'] == 0 && $category[$topid]['tid'] == 1) {
$mid = $category[$topid]['mid'] ? $category[$topid]['mid'] : APP_DIR;
if (dr_is_module($mid) && \Phpcmf\Service::M()->table(dr_module_table_prefix($mid))->where('catid', $topid)->counts()) {
$this->_json(0, dr_lang('目标栏目【%s】存在内容数据,无法作为父栏目', $category[$topid]['name']));
}
}
}
\Phpcmf\Service::M()->db->table($this->init['table'])->whereIn('id', $ids)->update(['pid' => $topid]);
\Phpcmf\Service::M('cache')->sync_cache();
$this->_json(1, dr_lang('操作成功'));
}
protected function _Admin_Show_Edit() {
$id = (int)\Phpcmf\Service::L('input')->get('id');
$row = \Phpcmf\Service::M('Category')->init($this->init)->get($id);
if (!$row) {
$this->_json(0, dr_lang('栏目数据不存在'));
}
$v = $row['show'] ? 0 : 1;
\Phpcmf\Service::M('Category')->init($this->init)->update($id, ['show' => $v]);
\Phpcmf\Service::M('cache')->sync_cache();
\Phpcmf\Service::L('input')->system_log('修改栏目的显示状态: '. $id);
exit($this->_json(1, dr_lang($v ? '显示状态' : '隐藏状态'), ['value' => $v, 'share' => 0]));
}
protected function _Admin_Html_Edit() {
$id = (int)\Phpcmf\Service::L('input')->get('id');
$row = \Phpcmf\Service::M('Category')->init($this->init)->get($id);
if (!$row) {
$this->_json(0, dr_lang('栏目数据不存在'));
}
if ($this->module['share']) {
$row['setting'] = dr_string2array($row['setting']);
if (!$row['setting']['urlrule']) {
$this->_json(0, dr_lang('此栏目是动态地址,无法开启静态'));
}
$html = (int)$row['setting']['html'];
$v = $html ? 0 : 1;
$name = $v ? '静态模式' : '动态模式';
$row['setting']['html'] = $v;
\Phpcmf\Service::M('Category')->init($this->init)->update($id, ['setting' => dr_array2string($row['setting'])]);
\Phpcmf\Service::L('input')->system_log('修改栏目状态为: '. $name . '['. $id.']');
\Phpcmf\Service::M('cache')->sync_cache();
exit($this->_json(1, dr_lang($v ? '静态模式' : '动态模式'), ['value' => $v, 'share' => 1]));
} else {
$html = (int)$this->module['html'];
$v = $html ? 0 : 1;
$name = $v ? '静态模式' : '动态模式';
$module = \Phpcmf\Service::M()->db->table('module')->where('id', $this->module['id'])->get()->getRowArray();
if (!$module) {
exit($this->_json(0, dr_lang('模块不存在')));
}
$site = dr_string2array($module['site']);
$site[SITE_ID]['html'] = $v;
if (!$site[SITE_ID]['urlrule']) {
$this->_json(0, dr_lang('此模块是动态地址,无法开启静态'));
}
\Phpcmf\Service::M()->db->table('module')->where('id', $this->module['id'])->update([
'site' => dr_array2string($site)
]);
\Phpcmf\Service::L('input')->system_log('修改模块状态为: '. $name);
\Phpcmf\Service::M('cache')->sync_cache();
exit($this->_json(1, dr_lang($name), ['value' => $v, 'share' => 0]));
}
}
public function scjt_edit() {
$ids = \Phpcmf\Service::L('input')->get_post_ids();
if (!$ids) {
$this->_json(0, dr_lang('没有选择任何栏目'));
}
if (IS_SHARE) {
$this->_json(1, dr_url('html/category_index', ['app' => '', 'ids' => implode(',', $ids)]));
} else {
$this->_json(1, dr_url('html/category_index', ['app' => APP_DIR, 'ids' => implode(',', $ids)]));
}
}
public function scjt2_edit() {
$ids = \Phpcmf\Service::L('input')->get_post_ids();
if (!$ids) {
$this->_json(0, dr_lang('没有选择任何栏目'));
}
if (IS_SHARE) {
$this->_json(1, dr_url('html/show_index', ['app' => '', 'catids' => implode(',', $ids)]));
} else {
$this->_json(1, dr_url('html/show_index', ['app' => APP_DIR, 'catids' => implode(',', $ids)]));
}
}
public function content_edit() {
$id = intval(\Phpcmf\Service::L('input')->get('id'));
$row = \Phpcmf\Service::M('Category')->init($this->init)->get($id);
if (!$row) {
$this->_admin_msg(0, dr_lang('栏目数据不存在'));
}
$row['setting'] = dr_string2array($row['setting']);
if ($row['setting']['getchild']) {
$this->_admin_msg(0, dr_lang('本栏目已开启【继承下级】请编辑它下级第一个单页面数据'));
}
if (IS_POST) {
$post = \Phpcmf\Service::L('input')->post('data', false);
\Phpcmf\Service::M('Category')->init($this->init)->update($id, ['content' => ($post['content'])]);
\Phpcmf\Service::L('input')->system_log('修改栏目内容: '. $row['name'] . '['. $id.']');
\Phpcmf\Service::M('cache')->sync_cache();
$this->_json(1, dr_lang('操作成功'));
exit;
}
$field = [
'name' => dr_lang('栏目内容'),
'ismain' => 1,
'fieldtype' => 'Ueditor',
'fieldname' => 'content',
'setting' => array(
'option' => array(
'mode' => 1,
'height' => 300,
'width' => '100%'
)
),
];
\Phpcmf\Service::V()->assign([
'myfield' => dr_fieldform($field, $row['content']),
]);
\Phpcmf\Service::V()->display('share_category_content.html');exit;
}
public function link_edit() {
$id = intval(\Phpcmf\Service::L('input')->get('id'));
$row = \Phpcmf\Service::M('Category')->init($this->init)->get($id);
if (!$row) {
$this->_json(0, dr_lang('栏目数据不存在'));
}
$row['setting'] = dr_string2array($row['setting']);
if (IS_POST) {
$row['setting']['linkurl'] = \Phpcmf\Service::L('input')->post('url');
\Phpcmf\Service::M('Category')->init($this->init)->update($id, ['setting' => dr_array2string($row['setting'])]);
\Phpcmf\Service::L('input')->system_log('修改栏目外链地址: '. $row['name'] . '['. $id.']');
\Phpcmf\Service::M('cache')->sync_cache();
$this->_json(1, dr_lang('操作成功'));
exit;
}
\Phpcmf\Service::V()->assign([
'myurl' => $row['setting']['linkurl'],
]);
\Phpcmf\Service::V()->display('share_category_linkurl.html');exit;
}
protected function _Data($id = 0) {
$row = \Phpcmf\Service::M('Category')->get($id);
if (!$row) {
return [];
}
$row['setting'] = dr_string2array($row['setting']);
return $row;
}
protected function _Save($id = 0, $data = [], $old = [], $func = null, $func2 = null) {
return parent::_Save($id, $data, $old,
function ($id, $data, $old){
$save = \Phpcmf\Service::L('input')->post('system', true);
if (!$save['name']) {
return dr_return_data(0, dr_lang('栏目名称不能为空'), ['field' => 'name']);
} elseif (!$save['dirname']) {
return dr_return_data(0, dr_lang('目录名称不能为空'), ['field' => 'dirname']);
} elseif (\Phpcmf\Service::M('Category')->check_dirname($id, $save['dirname'])) {
return dr_return_data(0, dr_lang('目录名称不可用'), ['field' => 'dirname']);
}
$save['show'] = (int)$save['show'];
foreach ($data[1] as $n => $t) {
$save[$n] = $t ? $t : '';
}
if ($this->module['share']) {
if (isset($save['tid'])) {
$save['tid'] = intval($save['tid']);
if ($save['tid'] == 1 && !$save['mid']) {
return dr_return_data(0, dr_lang('必须选择一个模块'));
} elseif ($save['pid'] && $save['tid'] != 2 && $this->module['category'][$save['pid']]['tid'] == 2) {
return dr_return_data(0, dr_lang('父级栏目是外部地址类型,下级栏目只能选择外部地址'));
} elseif ($save['tid'] == 2 && !$save['setting']['linkurl']) {
return dr_return_data(0, dr_lang('外部地址类型必须填写地址'));
}
!$save['tid'] && $save['setting']['template']['list'] == 'list.html' && $save['setting']['template']['list'] = 'page.html';
}
$save['domain'] = '';
$save['mobile_domain'] = '';
}
if ($save['pid'] && $id && $save['pid'] == $id) {
return dr_return_data(0, dr_lang('栏目上级不能为本身'));
}
if ($old && $save['pid'] && $save['pid'] != $old['pid']) {
if (!$this->module['category'][$save['pid']]) {
$this->_json(0, dr_lang('父栏目不存在'));
} elseif ($this->is_scategory && $this->module['category'][$save['pid']]['child'] == 0 && $this->module['category'][$save['pid']]['tid'] == 1) {
$mid = $this->module['category'][$save['pid']]['mid'] ? $this->module['category'][$save['pid']]['mid'] : APP_DIR;
if (dr_is_module($mid) && \Phpcmf\Service::M()->table(dr_module_table_prefix($mid))->where('catid', $save['pid'])->counts()) {
$this->_json(0, dr_lang('目标栏目【%s】存在内容数据,无法作为父栏目', $this->module['category'][$save['pid']]['name']));
}
}
}
$save['setting'] = dr_array2string($save['setting']);
$save['pids'] = '';
$save['pdirname'] = '';
$save['childids'] = '';
return dr_return_data(1, '', [1 => $save]);
}, function ($id, $data, $old) {
\Phpcmf\Service::M('cache')->sync_cache();
}
);
}
}