123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- <?php
- defined('IN_PHPCMS') or exit('No permission resources.');
- pc_base::load_app_class('admin','admin',0);
- class menu extends admin {
- function __construct() {
- parent::__construct();
- $this->db = pc_base::load_model('menu_model');
- }
-
- function init () {
- $tree = pc_base::load_sys_class('tree');
- $tree->icon = array(' │ ',' ├─ ',' └─ ');
- $tree->nbsp = ' ';
- $userid = $_SESSION['userid'];
- $admin_username = param::get_cookie('admin_username');
-
- $table_name = $this->db->table_name;
-
- $result = $this->db->select('','*','','listorder ASC,id DESC');
- $array = array();
- foreach($result as $r) {
- $r['cname'] = L($r['name']);
- $r['str_manage'] = '<a href="?m=admin&c=menu&a=add&parentid='.$r['id'].'&menuid='.$_GET['menuid'].'">'.L('add_submenu').'</a> | <a href="?m=admin&c=menu&a=edit&id='.$r['id'].'&menuid='.$_GET['menuid'].'">'.L('modify').'</a> | <a href="javascript:confirmurl(\'?m=admin&c=menu&a=delete&id='.$r['id'].'&menuid='.$_GET['menuid'].'\',\''.L('confirm',array('message'=>$r['cname'])).'\')">'.L('delete').'</a> ';
- $array[] = $r;
- }
- $str = "<tr>
- <td align='center'><input name='listorders[\$id]' type='text' size='3' value='\$listorder' class='input-text-c'></td>
- <td align='center'>\$id</td>
- <td >\$spacer\$cname</td>
- <td align='center'>\$str_manage</td>
- </tr>";
- $tree->init($array);
- $categorys = $tree->get_tree(0, $str);
- include $this->admin_tpl('menu');
- }
- function add() {
- if(isset($_POST['dosubmit'])) {
- $this->db->insert($_POST['info']);
- //开发过程中用于自动创建语言包
- $file = PC_PATH.'languages'.DIRECTORY_SEPARATOR.'zh-cn'.DIRECTORY_SEPARATOR.'system_menu.lang.php';
- if(file_exists($file)) {
- $content = file_get_contents($file);
- $content = substr($content,0,-2);
- $key = $_POST['info']['name'];
- $data = $content."\$LANG['$key'] = '$_POST[language]';\r\n?>";
- file_put_contents($file,$data);
- } else {
-
- $key = $_POST['info']['name'];
- $data = "<?php\r\n\$LANG['$key'] = '$_POST[language]';\r\n?>";
- file_put_contents($file,$data);
- }
- //结束
- showmessage(L('add_success'));
- } else {
- $show_validator = '';
- $tree = pc_base::load_sys_class('tree');
- $result = $this->db->select();
- $array = array();
- foreach($result as $r) {
- $r['cname'] = L($r['name']);
- $r['selected'] = $r['id'] == $_GET['parentid'] ? 'selected' : '';
- $array[] = $r;
- }
- $str = "<option value='\$id' \$selected>\$spacer \$cname</option>";
- $tree->init($array);
- $select_categorys = $tree->get_tree(0, $str);
- $models = pc_base::load_config('model_config');
-
- include $this->admin_tpl('menu');
- }
- }
- function delete() {
- $_GET['id'] = intval($_GET['id']);
- $this->db->delete(array('id'=>$_GET['id']));
- showmessage(L('operation_success'));
- }
-
- function edit() {
- if(isset($_POST['dosubmit'])) {
- $id = intval($_POST['id']);
- //print_r($_POST['info']);exit;
- $r = $this->db->get_one(array('id'=>$id));
- $this->db->update($_POST['info'],array('id'=>$id));
- //修改语言文件
- $file = PC_PATH.'languages'.DIRECTORY_SEPARATOR.'zh-cn'.DIRECTORY_SEPARATOR.'system_menu.lang.php';
- require $file;
- $key = $_POST['info']['name'];
- if(!isset($LANG[$key])) {
- $content = file_get_contents($file);
- $content = substr($content,0,-2);
- $data = $content."\$LANG['$key'] = '$_POST[language]';\r\n?>";
- file_put_contents($file,$data);
- } elseif(isset($LANG[$key]) && $LANG[$key]!=$_POST['language']) {
- $content = file_get_contents($file);
- $content = str_replace($LANG[$key],$_POST['language'],$content);
- file_put_contents($file,$content);
- }
- $this->update_menu_models($id, $r, $_POST['info']);
-
- //结束语言文件修改
- showmessage(L('operation_success'));
- } else {
- $show_validator = $array = $r = '';
- $tree = pc_base::load_sys_class('tree');
- $id = intval($_GET['id']);
- $r = $this->db->get_one(array('id'=>$id));
- if($r) extract($r);
- $result = $this->db->select();
- foreach($result as $r) {
- $r['cname'] = L($r['name']);
- $r['selected'] = $r['id'] == $parentid ? 'selected' : '';
- $array[] = $r;
- }
- $str = "<option value='\$id' \$selected>\$spacer \$cname</option>";
- $tree->init($array);
- $select_categorys = $tree->get_tree(0, $str);
- $models = pc_base::load_config('model_config');
- include $this->admin_tpl('menu');
- }
- }
-
- /**
- * 排序
- */
- function listorder() {
- if(isset($_POST['dosubmit'])) {
- foreach($_POST['listorders'] as $id => $listorder) {
- $this->db->update(array('listorder'=>$listorder),array('id'=>$id));
- }
- showmessage(L('operation_success'));
- } else {
- showmessage(L('operation_failure'));
- }
- }
-
- /**
- * 更新菜单的所属模式
- * @param $id INT 菜单的ID
- * @param $old_data 该菜单的老数据
- * @param $new_data 菜单的新数据
- **/
- private function update_menu_models($id, $old_data, $new_data) {
- $models_config = pc_base::load_config('model_config');
- if (is_array($models_config)) {
- foreach ($models_config as $_k => $_m) {
- if (!isset($new_data[$_k])) $new_data[$_k] = 0;
- if ($old_data[$_k]==$new_data[$_k]) continue; //数据没有变化时继续执行下一项
- $r = $this->db->get_one(array('id'=>$id), 'parentid');
- $this->db->update(array($_k=>$new_data[$_k]), array('id'=>$id));
- if ($new_data[$_k] && $r['parentid']) {
- $this->update_parent_menu_models($r['parentid'], $_k); //如果设置所属模式,更新父级菜单的所属模式
- }
- }
- }
- return true;
- }
- /**
- * 更新父级菜单的所属模式
- * @param $id int 菜单ID
- * @param $field 修改字段名
- */
- private function update_parent_menu_models($id, $field) {
- $id = intval($id);
- $r = $this->db->get_one(array('id'=>$id), 'parentid');
- $this->db->update(array($field=>1), array('id'=>$id)); //修改父级的所属模式,然后判断父级是否存在父级
- if ($r['parentid']) {
- $this->update_parent_menu_models($r['parentid'], $field);
- }
- return true;
- }
- }
- ?>
|