Пример #1
0
 public function index()
 {
     require APPPATH . 'libraries/tree.class.php';
     $category_edit_option = $category_del_option = false;
     if (check_backend_module_perm('edit', 'category', $this->data['user_info'])) {
         $category_edit_option = true;
     }
     if (check_backend_module_perm('del', 'category', $this->data['user_info'])) {
         $category_del_option = true;
     }
     $edit_str = $del_str = '';
     $categorys = $this->categorys;
     foreach ($categorys as $key => $row) {
         if ($category_edit_option) {
             $edit_str = '<a href="#" data="' . $row['catid'] . '" class="green cate_edit" title="编辑"><i class="icon-pencil bigger-130"></i></a>';
         }
         if ($category_del_option) {
             $del_str = '<a href="#" data="' . $row['catid'] . '" data-title="' . $row['catname'] . '" class="red delete_confirm" title="删除"><i class="icon-trash bigger-130"></i></a>';
         }
         $categorys[$key]['str_manage'] = "{$edit_str} &nbsp; {$del_str}";
         $categorys[$key]['str_menu'] = $row['ismenu'] ? '<span class="label label-sm label-success">YES</span>' : '<span class="label label-sm label-danger">NO</span>';
     }
     $tree = new tree();
     $tree->icon = array('&nbsp;&nbsp;&nbsp;│ ', '&nbsp;&nbsp;&nbsp;├─ ', '&nbsp;&nbsp;&nbsp;└─ ');
     $tree->nbsp = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
     $str = "<tr>\n    \t\t\t\t<td><label><input type='checkbox' class='ace' name='id[]' value='\$id' /><span class='lbl'></span></label></td>\n    \t\t\t\t<td>\$id</td>\n    \t\t\t\t<td class='left'>\$spacer\$catname</td>\n    \t\t\t\t<td>\$str_menu</td>\n    \t\t\t\t<td>\$str_manage</td>\n    \t\t\t</tr>";
     $tree->init($categorys);
     $categorys = $tree->get_tree(0, $str);
     $this->data['categorys'] = $categorys;
     $this->repair(false);
     $this->load->view('category/list', $this->data);
 }
Пример #2
0
 public function getActionTree()
 {
     $sql = "SELECT id,parent_id,action_name from {$this->_table}";
     $cates = $res = $this->getList($sql);
     $this->load->helper('html_tree');
     $tree = new tree($cates);
     $tree->icon = array('&nbsp;&nbsp;│&nbsp;', '&nbsp;&nbsp;├─&nbsp;', '&nbsp;&nbsp;└─&nbsp;');
     //树形图标
     $tree->nbsp = '&nbsp;&nbsp;&nbsp;';
     //三个空格
     $options = '';
     $tree->init($cates);
     return $tree->get_tree(0, "<option value='\$id'>\$spacer\$action_name</option>\n");
 }
Пример #3
0
 /**
  * 根据 site_id 获取该 站点 下所有的虚拟分类的树
  * @param $site_id int
  * @param $str string 生成树型结构的基本代码,例如:例如:'<option value={$id} {$selected}>{$spacer}{$title}</option>'
  * @param $sid int 被选中的ID,比如在做树型下拉框的时候需要用到
  * @param $icon 前缀
  * @return string
  */
 public function get_tree($str, $sid = 0, $icon = '--')
 {
     $result = array();
     $query_struct = array('where' => array(), 'like' => array(), 'orderby' => array(), 'limit' => array());
     $result = $this->query_assoc($query_struct);
     $tree = tree::get_tree($result, $str, 0, $sid, $icon);
     return $tree;
 }
Пример #4
0
 public function categoryedit()
 {
     $this->_checkSecurity('category');
     $id = intval($_GET["id"]);
     if (!$id) {
         $this->error(L('_SELECT_NOT_EXIST_'));
     }
     $Category = D("Category");
     $list = $Category->find($id);
     if (!$list) {
         $this->error(L('_SELECT_NOT_EXIST_'));
     }
     $parentId = $list['parentid'];
     //父ID
     $map['module'] = 1;
     $map['parent_id'] = 0;
     $Category = D('Category')->order("displayorder desc")->where($map)->findall();
     foreach ($Category as $catid => $category) {
         $Categorys[$category['id']] = array('id' => $category['id'], 'parent_id' => $category['parent_id'], 'title' => $category['title']);
     }
     import('ORG.Util.Tree');
     $tree = new tree($Categorys);
     $str = "<option value=\$id \$selected>\$spacer\$title</option>";
     $html .= $tree->get_tree(0, $str, $parentId);
     //用户组
     $Group = D('Usergroup')->where('ID NOT IN (1,2)')->order("id asc")->findall();
     if (!$Group) {
         $this->error('用户组丢失,请检查');
     }
     //用户组丢失,请检查
     $this->assign('group', $Group);
     $this->assign('html', $html);
     $this->assign('list', $list);
     $this->assign('cate', $Category);
     $this->display();
 }
Пример #5
0
 public function edit()
 {
     role::check('product_filter_edit');
     $return_struct = array('status' => 0, 'code' => 501, 'msg' => 'Not Implemented', 'content' => array());
     try {
         //* 初始化返回数据 */
         $return_data = array('action' => "post", 'data' => array(), 'category_list' => NULL);
         //* 收集请求数据 ==根据业务逻辑定制== */
         $request_data = $this->input->get();
         //数据验证
         if (!isset($request_data['id']) || !is_numeric($request_data['id'])) {
             throw new MyRuntimeException(Kohana::lang('o_global.bad_request'), 404);
         }
         $alias_filter_service = Alias_filterService::get_instance();
         $filter = $alias_filter_service->get($request_data['id']);
         //虚拟分类树
         $str = '<option value={$id} {$selected}>{$spacer}{$title}</option>';
         $return_data['filter_list'] = $alias_filter_service->get_tree($str, $filter['pid']);
         //返回数据
         $category_service = CategoryService::get_instance();
         $categories = $category_service->get_categories();
         $str = '<option value={$id} {$selected}>{$spacer}{$title_manage}</option>';
         $return_data['category_list'] = tree::get_tree($categories, $str, 0, $filter['category_id']);
         if (!empty($filter['category_id'])) {
             $category = $category_service->get($filter['category_id']);
             if (!empty($category['classify_id'])) {
                 $classify_service = ClassifyService::get_instance();
                 $classify = $classify_service->get($category['classify_id']);
                 $filter['classify_name'] = $classify['name'];
                 //获取类型关联品牌数组
                 $filter['brand_list'] = $classify_service->get_brands_by_classify_id($category['classify_id']);
                 //获取类型关联规格及规格项数组
                 $filter['attribute_list'] = $classify_service->get_attribute_options_by_classify_id($category['classify_id'], AttributeService::ATTRIBUTE_SPEC);
                 //获取类型关联特性及特性值数组
                 $filter['feature_list'] = $classify_service->get_attribute_options_by_classify_id($category['classify_id'], AttributeService::ATTRIBUTE_FEATURE);
             }
         } else {
             //当前站点品牌
             $filter['brand_list'] = BrandService::get_instance()->get_brands();
             //当前站点规格
             $filter['attribute_list'] = AttributeService::get_instance()->get_attribute_spec_options();
             //当前站点品牌
             $filter['feature_list'] = AttributeService::get_instance()->get_attribute_feature_options();
         }
         //获取过滤条件
         $filter['filter_struct'] = json_decode($filter['filter_struct'], TRUE);
         $filter['filter_struct']['pricefrom'] = !empty($filter['filter_struct']['pricefrom']) ? $filter['filter_struct']['pricefrom'] : '';
         $filter['filter_struct']['priceto'] = !empty($filter['filter_struct']['priceto']) ? $filter['filter_struct']['priceto'] : '';
         $return_data['data'] = $filter;
         //* 补充&修改返回结构体 */
         $return_struct['status'] = 1;
         $return_struct['code'] = 200;
         $return_struct['msg'] = '';
         $return_struct['content'] = $return_data;
         //* 请求类型 */
         if ($this->is_ajax_request()) {
             // ajax 请求
             // json 输出
             $this->template->content = $return_struct;
         } else {
             // html 输出
             //* 模板输出 */
             $content = new View('product/' . $this->class_name . '/' . __FUNCTION__);
             //* 变量绑定 */
             $this->template->title = Kohana::config('site.name');
             $this->template->content = $content;
             //* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             //* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
         }
         // end of request type determine
     } catch (MyRuntimeException $ex) {
         $return_struct['status'] = 0;
         $return_struct['code'] = $ex->getCode();
         $return_struct['msg'] = $ex->getMessage();
         //TODO 异常处理
         //throw $ex;
         if ($this->is_ajax_request()) {
             $this->template->content = $return_struct;
         } else {
             $this->template->return_struct = $return_struct;
             $content = new View('info');
             $this->template->content = $content;
             //* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             //* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
         }
     }
 }
Пример #6
0
                                    <td>{$classify_name}&nbsp;</td>
                                    <td class=\\"over\\">
										<div class=\\"new_float_parent\\">
											<input type=\\"text\\" class=\\"text\\" size=\\"4\\" name=\\"position\\" value=\\"{$position}\\" />
											<div class=\\"new_float\\" style=\\"z-index:9999\\">
												<input type=\\"text\\" class=\\"text\\" size=\\"4\\" name=\\"order\\" value=\\"{$position}\\" />
												<input type=\\"button\\" class=\\"ui-button-small\\" value=\\"保存\\" name=\\"submit_order_form\\" />
												<input type=\\"hidden\\" name=\\"id\\" value=\\"{$id}\\"/>
												<input type=\\"button\\" class=\\"ui-button-small\\" value=\\"取消\\" name=\\"cancel_order_form\\" />
											</div>                       
										</div>	
                                    </td>
                                    <td>{$update_timestamp}&nbsp;</td>
                                    <td>{$is_show}&nbsp;</td>
                                </tr>';
    $tree = tree::get_tree($list, $str, 0, 0, '&nbsp;&nbsp;&nbsp;');
    echo $tree;
    ?>
                </tbody>
            </form>
        </table>
            <?php 
} else {
    ?>
            <?php 
    echo remind::no_rows();
    ?>
            <?php 
}
?>
    </div>
Пример #7
0
 public function edit()
 {
     role::check('product_category_edit');
     $return_struct = array('status' => 0, 'code' => 501, 'msg' => 'Not Implemented', 'content' => array());
     try {
         //* 初始化返回数据 */
         $return_data = array('action' => 'post');
         //* 收集请求数据 ==根据业务逻辑定制== */
         $request_data = $this->input->get();
         //数据验证
         if (!isset($request_data['id']) || !is_numeric($request_data['id'])) {
             throw new MyRuntimeException(Kohana::lang('o_global.input_error'), 404);
         }
         $category_service = CategoryService::get_instance();
         $category = $category_service->get($request_data['id']);
         //返回数据
         //$category['pic_url'] = AttributeService::get_attach_url($category['pic_attach_id'], 't');
         $category['pic_url'] = AttService::get_instance($this->img_dir_name)->get_img_url($category['pic_attach_id']);
         $return_data['data'] = $category;
         //uri_name处理
         $route = Myroute::instance()->get();
         $route_type = $route['type'];
         $category_route = $route['category'];
         $category_suffix = $route['category_suffix'];
         if ($route_type == 0) {
             // 0: none  get category and product with id
             $category_permalink = $category_route . '/' . $category['id'];
         } else {
             if ($route_type == 1) {
                 // 1: get  product with {product}/permalink
                 $category_permalink = $category_route . '/';
             } else {
                 if ($route_type == 2 || $route_type == 4) {
                     // 2: get category and product with {category_permalink}  and {category+permalink}/{product_permalink}
                     $category_permalink = '';
                 } else {
                     if ($route_type == 3) {
                         // 3: get category and prdouct with {category_permalink1}/.../{category_permalinkn} and {category_permalink1}/.../{category_permalinkn}/{product_permalink}
                         $parents = $category_service->get_parents_by_category_id($category['id']);
                         $category_permalink = '';
                         $i = 1;
                         foreach ($parents as $val) {
                             if ($i != 1) {
                                 $category_permalink = urlencode($val['uri_name']) . '/' . $category_permalink;
                             }
                             $i++;
                         }
                     }
                 }
             }
         }
         //当前站点分类
         $categories = $category_service->get_categories();
         $child_ids = $category_service->get_childrens_by_category_id($category['id']);
         $parent_data = $category_service->get_parents_by_category_id($category['id']);
         $parent_is_show = isset($parent_data[1]) ? $parent_data[1]['is_show'] : 1;
         //去掉子分类和自己
         foreach ($categories as $key => $val) {
             if (in_array($val['id'], $child_ids) || $val['id'] == $category['id']) {
                 unset($categories[$key]);
             }
         }
         $str = '<option value={$id} {$selected}>{$spacer}{$title}</option>';
         //$return_data['category_list'] = $category_service->get_tree_by_site_id($request_data['site_id'], '<option value={$id} {$selected}>{$spacer}{$title}</option>',$category['pid']);
         $return_data['category_list'] = tree::get_tree($categories, $str, 0, $category['pid']);
         //当前站点类型
         $classify = ClassifyService::get_instance()->get_classifies();
         $return_data['classify_list'] = '';
         foreach ($classify as $val) {
             $selected = $category['classify_id'] == $val['id'] ? 'selected' : '';
             $return_data['classify_list'] .= '<option value=' . $val['id'] . ' ' . $selected . '>--' . $val['name'] . '--</option>';
         }
         //* 补充&修改返回结构体 */
         $return_struct['status'] = 1;
         $return_struct['code'] = 200;
         $return_struct['msg'] = '';
         $return_struct['content'] = $return_data;
         //* 请求类型 */
         if ($this->is_ajax_request()) {
             // ajax 请求
             // json 输出
             $this->template->content = $return_struct;
         } else {
             // html 输出
             //* 模板输出 */
             $content = new View($this->package . '/' . $this->class_name . '/' . __FUNCTION__);
             //* 变量绑定 */
             $this->template->title = Kohana::config('site.name');
             $this->template->content = $content;
             //* 请求结构数据绑定 */
             $this->template->content->request_data = $request_data;
             //* 返回结构体绑定 */
             $this->template->content->return_struct = $return_struct;
             //:: 当前应用专用数据
             $this->template->content->has_child = count($child_ids);
             $this->template->content->parent_is_show = $parent_is_show;
             $this->template->content->route_type = $route_type;
             $this->template->content->category_suffix = $category_suffix;
             $this->template->content->category_permalink = $category_permalink;
         }
         // end of request type determine
     } catch (MyRuntimeException $ex) {
         $this->_ex(&$ex, $return_struct, $request_data);
     }
 }
Пример #8
0
function cache_category($moduleid = 0, $data = array())
{
    global $db, $DT, $MODULE;
    if ($moduleid) {
        if (!$data) {
            $result = $db->query("SELECT * FROM {$db->pre}category WHERE moduleid='{$moduleid}' ORDER BY listorder,catid");
            while ($r = $db->fetch_array($result)) {
                $data[$r['catid']] = $r;
            }
        }
        $mod = cache_read('module-' . $moduleid . '.php');
        $a = array();
        $d = array('listorder', 'moduleid', 'item', 'template', 'show_template', 'seo_title', 'seo_keywords', 'seo_description', 'group_list', 'group_show', 'group_add');
        foreach ($data as $r) {
            $e = $r['catid'];
            foreach ($d as $_d) {
                unset($r[$_d]);
            }
            $a[$e] = $r;
        }
        cache_write('category-' . $moduleid . '.php', $a);
        if (count($data) < 100) {
            $categorys = array();
            foreach ($data as $id => $cat) {
                $categorys[$id] = array('id' => $id, 'parentid' => $cat['parentid'], 'name' => $cat['catname']);
            }
            require_once DT_ROOT . '/include/tree.class.php';
            $tree = new tree();
            $tree->tree($categorys);
            $content = $tree->get_tree(0, "<option value=\\\"\$id\\\">\$spacer\$name</option>") . '</select>';
            cache_write('catetree-' . $moduleid . '.php', $content);
        } else {
            cache_delete('catetree-' . $moduleid . '.php');
        }
    } else {
        foreach ($MODULE as $moduleid => $module) {
            cache_category($moduleid);
        }
    }
}
Пример #9
0
 /**
  * 获取所有菜单的下拉列表
  * @return type
  */
 public function getAllAuthItem()
 {
     $all = self::model()->findAll("1=1 order By pid DESC ,sort DESC");
     $wall = array();
     foreach ($all as $key => $value) {
         $wall[$value['id']]['id'] = $value['id'];
         $wall[$value['id']]['name'] = $value['name'];
         $wall[$value['id']]['pid'] = $value['pid'];
     }
     $tree = new tree($wall);
     $str = "\$id+\$spacer\$name,";
     $strs = trim($tree->get_tree(0, $str));
     $arr1 = explode(",", $strs);
     $result = array();
     foreach ($arr1 as $key => $value) {
         if ($value == "") {
             unset($arr1[$key]);
         }
         $arra[] = explode("+", $value);
     }
     //去除重复
     foreach ($arra as $key => $value) {
         foreach ($value as $key1 => $value1) {
             if ($value1 == "") {
                 unset($arra[$key]);
             }
         }
     }
     //整理数组
     $re = array();
     foreach ($arra as $key => $value) {
         $re[$value[0]] = $value[1];
     }
     return $re;
 }
Пример #10
0
 /**
  * 根据 category_id 获取该 分类 下所有的子分类树
  * @param $category_id  int
  * @param $str string 生成树型结构的基本代码,例如:例如:'<option value={$id} {$selected}>{$spacer}{$title}</option>'
  * @param $sid int 被选中的ID,比如在做树型下拉框的时候需要用到 
  * @param $icon 前缀
  * @return string
  */
 public function get_tree_by_category_id($category_id, $str, $sid = 0, $icon = '--')
 {
     $categories = array();
     $category = $this->get($category_id);
     $site_id = $category['site_id'];
     $categories = $this->load();
     $tree = tree::get_tree($categories, $str, $category_id, $sid, $icon);
     return $tree;
 }
Пример #11
0
 public static function getTree($data, $format = "<option value='\$catid' \$selected>\$spacer\$name</option>", $id = 0, $nbsp = "&nbsp;&nbsp;&nbsp;&nbsp;", $icon = array("&nbsp;&nbsp;", "&nbsp;&nbsp;", "&nbsp;&nbsp;"))
 {
     Ibos::import("ext.Tree", true);
     $tree = new tree();
     $tree->init($data);
     $tree->icon = $icon;
     $tree->nbsp = $nbsp;
     $trees = $tree->get_tree(0, $format, $id);
     return $trees;
 }
Пример #12
0
 /**
  * 编辑商品分类导航
  */
 public function category_menu_edit($id)
 {
     $site_menu = Mysite_menu::instance($id);
     $temp = Mysite_menu::instance()->site_menu_queue($id);
     if ($_POST) {
         //标签过滤
         tool::filter_strip_tags($_POST);
         /* 获取要编辑的导航的level_depth并修改其下所有的子导航的level_depth*/
         $data = $_POST;
         $parent_id = $this->input->post('parent_id');
         if ($parent_id == 0) {
             $data['level_depth'] = 1;
         } else {
             $parent_level_depth = Mysite_menu::instance($parent_id)->get('level_depth');
             $data['level_depth'] = $parent_level_depth + 1;
         }
         if (!Mysite_menu::instance()->child_level_depth_edit($id, $data['level_depth'], $temp)) {
             remind::set(Kohana::lang('o_global.update_error'), 'site/menu');
         }
         /* 获取所添加的分类的url*/
         $category_id = $this->input->post('category_id');
         $data['url'] = category::permalink($category_id, false);
         //'/category/'.$category_id;
         /* 标志导航类型*/
         $data['memo'] = 'category';
         $data['type'] = $this->MENU_TYPE_CATEGORY;
         $data['relation_id'] = $category_id;
         if ($site_menu->site_menu_edit($id, $data)) {
             remind::set(Kohana::lang('o_global.update_success'), 'site/menu/', 'success');
         } else {
             remind::set(Kohana::lang('o_global.update_error'), 'site/menu');
         }
     }
     $site_menu_data = $site_menu->get();
     /* 得到导航列表并删除自身及自身的子目录*/
     $child_ids = array();
     $site_menus = Mysite_menu::instance()->site_menu_queue();
     foreach ($temp as $val) {
         $child_ids[] = $val['id'];
     }
     foreach ($site_menus as $key => $value) {
         if ($value['id'] == $id || in_array($value['id'], $child_ids)) {
             unset($site_menus[$key]);
         }
     }
     /* 当前站点分类*/
     $categories = CategoryService::get_instance()->get_categories();
     $str = '<option value={$id} {$selected}>{$spacer}{$title_manage}</option>';
     $category_list = tree::get_tree($categories, $str, 0, $site_menu_data['relation_id']);
     $this->template->content = new View("site/category_menu_edit");
     $this->template->content->site_menus = $site_menus;
     $this->template->content->category_list = $category_list;
     $this->template->content->site_menu_data = $site_menu_data;
 }