?>
"></label><?php 
                                                echo clean_hide_attr($vo);
                                                ?>
							   <![endif]-->
                             </div><?php 
                                            }
                                        }
                                    } else {
                                        echo "";
                                    }
                                    break;
                                    ?>
                        <?php 
                                case "checkbox":
                                    $_result = parse_field_attr($field['extra']);
                                    if (is_array($_result)) {
                                        $i = 0;
                                        $__LIST__ = $_result;
                                        if (count($__LIST__) == 0) {
                                            echo "";
                                        } else {
                                            foreach ($__LIST__ as $key => $vo) {
                                                $mod = $i % 2;
                                                ++$i;
                                                ?>
<div class="check-item">
                              <input type="checkbox" class="regular-checkbox toggle-data" value="<?php 
                                                echo $key;
                                                ?>
" id="<?php 
 /**
  * 分类文档列表页
  * @param integer $cate_id 分类id
  * @param integer $model_id 模型id
  * @param integer $position 推荐标志
  * @param integer $group_id 分组id
  */
 public function index($cate_id = null, $model_id = null, $position = null, $group_id = null)
 {
     //获取左边菜单
     $this->getMenu();
     if ($cate_id === null) {
         $cate_id = $this->cate_id;
     }
     if (!empty($cate_id)) {
         $pid = I('pid', 0);
         // 获取列表绑定的模型
         if ($pid == 0) {
             $models = get_category($cate_id, 'model');
             // 获取分组定义
             $groups = get_category($cate_id, 'groups');
             if ($groups) {
                 $groups = parse_field_attr($groups);
             }
         } else {
             // 子文档列表
             $models = get_category($cate_id, 'model_sub');
         }
         if (is_null($model_id) && !is_numeric($models)) {
             // 绑定多个模型 取基础模型的列表定义
             $model = D('Model')->getByName('document');
         } else {
             $model_id = $model_id ?: $models;
             //获取模型信息
             $model = D('Model')->getById($model_id);
             if (empty($model['list_grid'])) {
                 $model['list_grid'] = D('Model')->getFieldByName('document', 'list_grid');
             }
         }
         $this->assign('model', explode(',', $models));
     } else {
         // 获取基础模型信息
         $model = D('Model')->getByName('document');
         $model_id = null;
         $cate_id = 0;
         $this->assign('model', null);
     }
     //解析列表规则
     $fields = array();
     $grids = preg_split('/[;\\r\\n]+/s', trim($model['list_grid']));
     foreach ($grids as &$value) {
         // 字段:标题:链接
         $val = explode(':', $value);
         // 支持多个字段显示
         $field = explode(',', $val[0]);
         $value = array('field' => $field, 'title' => $val[1]);
         if (isset($val[2])) {
             // 链接信息
             $value['href'] = $val[2];
             // 搜索链接信息中的字段信息
             preg_replace_callback('/\\[([a-z_]+)\\]/', function ($match) use(&$fields) {
                 $fields[] = $match[1];
             }, $value['href']);
         }
         if (strpos($val[1], '|')) {
             // 显示格式定义
             list($value['title'], $value['format']) = explode('|', $val[1]);
         }
         foreach ($field as $val) {
             $array = explode('|', $val);
             $fields[] = $array[0];
         }
     }
     // 文档模型列表始终要获取的数据字段 用于其他用途
     $fields[] = 'category_id';
     $fields[] = 'model_id';
     $fields[] = 'pid';
     // 过滤重复字段信息
     $fields = array_unique($fields);
     // 列表查询
     $list = $this->getDocumentList($cate_id, $model_id, $position, $fields, $group_id);
     // 列表显示处理
     $list = $this->parseDocumentList($list, $model_id);
     $this->assign('model_id', $model_id);
     $this->assign('group_id', $group_id);
     $this->assign('position', $position);
     $this->assign('groups', $groups);
     $this->assign('list', $list);
     $this->assign('list_grids', $grids);
     $this->assign('model_list', $model);
     // 记录当前列表页的cookie
     Cookie('__forward__', $_SERVER['REQUEST_URI']);
     $this->display();
 }
						</div>
					</div>
					<div class="form-item cf">
						<label class="item-label">表单显示分组<span class="check-tips">(用于表单显示的分组,以及设置该模型表单排序的显示)</span></label>
						<div class="controls">
							<input type="text" class="text input-large" name="field_group" value="<?php 
echo $info["field_group"];
?>
">
						</div>
					</div>
					<div class="form-item cf">
					<label class="item-label">表单显示排序<span class="check-tips">(直接拖动进行排序)</span></label>
					<?php 
$_result = parse_field_attr($info['field_group']);
if (is_array($_result)) {
    $i = 0;
    $__LIST__ = $_result;
    if (count($__LIST__) == 0) {
        echo "";
    } else {
        foreach ($__LIST__ as $key => $vo) {
            $mod = $i % 2;
            ++$i;
            ?>
<div class="form-item cf edit_sort edit_sort_l form_field_sort">
							<span><?php 
            echo $vo;
            ?>
</span>
Ejemplo n.º 4
0
 /**
  * 处理文档列表显示
  * @param array $list 列表数据
  * @param integer $model_id 模型id
  */
 protected function parseDocumentList($list, $model_id = null)
 {
     $model_id = $model_id ? $model_id : 1;
     $attrList = get_model_attribute($model_id, false, 'id,name,type,extra');
     // 对列表数据进行显示处理
     if (is_array($list)) {
         foreach ($list as $k => $data) {
             foreach ($data as $key => $val) {
                 if (isset($attrList[$key])) {
                     $extra = $attrList[$key]['extra'];
                     $type = $attrList[$key]['type'];
                     if ('select' == $type || 'checkbox' == $type || 'radio' == $type || 'bool' == $type) {
                         // 枚举/多选/单选/布尔型
                         $options = parse_field_attr($extra);
                         if ($options && array_key_exists($val, $options)) {
                             $data[$key] = $options[$val];
                         }
                     } elseif ('date' == $type) {
                         // 日期型
                         $data[$key] = date('Y-m-d', $val);
                     } elseif ('datetime' == $type) {
                         // 时间型
                         $data[$key] = date('Y-m-d H:i', $val);
                     }
                 }
             }
             $data['model_id'] = $model_id;
             $list[$k] = $data;
         }
     }
     return $list;
 }
 /**
  * 分类文档列表页
  * @param integer $cate_id 分类id
  * @param integer $model_id 模型id
  * @param integer $position 推荐标志
  * @param integer $group_id 分组id
  */
 public function index()
 {
     $cate_id = I('cate_id');
     $model_id = I('model_id', null);
     $position = I('position', null);
     $group_id = I('group_id', null);
     //获取面包屑信息
     $nav = get_parent_category($cate_id);
     $this->assign('rightNav', $nav);
     if ($cate_id === null) {
         $cate_id = $this->cate_id;
     }
     if (!empty($cate_id)) {
         $pid = I('pid', 0);
         // 获取列表绑定的模型
         if ($pid == 0) {
             $models = get_category($cate_id, 'model');
             // 获取分组定义
             $groups = get_category($cate_id, 'groups');
             if ($groups) {
                 $groups = parse_field_attr($groups);
             }
         } else {
             // 子文档列表
             $models = get_category($cate_id, 'model_sub');
         }
         if (is_null($model_id) && !is_numeric($models)) {
             // 绑定多个模型 取基础模型的列表定义
             $model = M('Model')->getByName('document');
         } else {
             $model_id = $model_id ?: $models;
             //获取模型信息
             $model = M('Model')->getById($model_id);
             if (empty($model['list_grid'])) {
                 $model['list_grid'] = M('Model')->getFieldByName('document', 'list_grid');
             }
         }
         $this->assign('model', explode(',', $models));
     } else {
         $site_id = $this->site_id;
         $cates = M("Category")->where("site_id = {$site_id}")->getField('id', true);
         // 获取基础模型信息
         $model = M('Model')->getByName('document');
         $model_id = null;
         if (empty($cates)) {
             $cate_id = array('in', array(null));
         } else {
             $cate_id = array('in', $cates);
         }
         $this->assign('model', null);
     }
     if ($model['name'] == 'single') {
         $document_id = M('Document')->where("category_id={$cate_id}")->getField('id');
         $data = array();
         if ($document_id) {
             // 获取详细数据
             $Document = D('Document');
             $data = $Document->detail($document_id);
         } else {
             $data['pid'] = 0;
             $data['category_id'] = $cate_id;
             $data['model_id'] = $model_id;
         }
         $this->assign('data', $data);
         $this->assign('model_id', $data['model_id']);
         $this->assign('model', $model);
         //获取表单字段排序
         $fields = get_model_attribute($model['id']);
         $this->assign('fields', $fields);
         //获取当前分类的文档类型
         $this->assign('type_list', get_type_bycate($data['category_id']));
         $this->meta_title = '编辑内容';
         $this->display('Profile/Article/edit');
     } else {
         //解析列表规则
         $fields = array();
         $grids = preg_split('/[;\\r\\n]+/s', trim($model['list_grid']));
         foreach ($grids as &$value) {
             // 字段:标题:链接
             $val = explode(':', $value);
             // 支持多个字段显示
             $field = explode(',', $val[0]);
             $value = array('field' => $field, 'title' => $val[1]);
             if (isset($val[2])) {
                 // 链接信息
                 $value['href'] = $val[2];
                 // 搜索链接信息中的字段信息
                 preg_replace_callback('/\\[([a-z_]+)\\]/', function ($match) use(&$fields) {
                     $fields[] = $match[1];
                 }, $value['href']);
             }
             if (strpos($val[1], '|')) {
                 // 显示格式定义
                 list($value['title'], $value['format']) = explode('|', $val[1]);
             }
             foreach ($field as $val) {
                 $array = explode('|', $val);
                 $fields[] = $array[0];
             }
         }
         // 文档模型列表始终要获取的数据字段 用于其他用途
         $fields[] = 'category_id';
         $fields[] = 'model_id';
         $fields[] = 'pid';
         // 过滤重复字段信息
         $fields = array_unique($fields);
         // 列表查询
         $list = $this->getDocumentList($cate_id, $model_id, $position, $fields, $group_id);
         // 列表显示处理
         $list = $this->parseDocumentList($list, $model_id);
         $this->assign('model_id', $model_id);
         $this->assign('cate_id', $cate_id);
         $this->assign('group_id', $group_id);
         $this->assign('position', $position);
         $this->assign('groups', $groups);
         $this->assign('list', $list);
         $this->assign('list_grids', $grids);
         $this->assign('model_list', $model);
         // 记录当前列表页的cookie
         Cookie('__forward__', $_SERVER['REQUEST_URI']);
         $this->display('Profile/Article/index');
     }
 }
Ejemplo n.º 6
0
 /**
  * 编辑页面初始化
  * @author huajie <*****@*****.**>
  */
 public function edit()
 {
     $id = I('get.id', '');
     if (empty($id)) {
         $this->error('参数不能为空!');
     }
     /*获取一条记录的详细数据*/
     $Model = M('Model');
     $data = $Model->field(true)->find($id);
     if (!$data) {
         $this->error($Model->getError());
     }
     /* 获取模型排序字段 */
     $fields = json_decode($data['field_sort'], true);
     if (empty($fields)) {
         //未排序
         $base_fields = M('Attribute')->where(array('model_id' => $data['id'], 'is_show' => 1))->field('id,name,title')->select();
         //是否继承了其他模型
         $extend_fields = array();
         if ($data['extend'] != 0) {
             $extend_fields = M('Attribute')->where(array('model_id' => $data['extend'], 'is_show' => 1))->field('id,name,title')->select();
         }
         $fields = array_merge($base_fields, $extend_fields);
         //默认分组设为1
         foreach ($fields as $key => $value) {
             $fields[$key]['group'] = 1;
         }
     } else {
         //已排序
         //查询字段数据
         $fields_list = array();
         foreach ($fields as $key => $value) {
             foreach ($value as $k => $v) {
                 $info = M('Attribute')->where(array('id' => $v))->field('id,name,title,is_show')->find();
                 if (!empty($info)) {
                     $info['group'] = $key;
                     $fields_list[] = $info;
                 }
             }
         }
         //检查字段分组规则是否被修改
         $keys = array_keys($fields);
         $group = array_keys(parse_field_attr($data['field_group']));
         foreach ($keys as $value) {
             if (!in_array($value, $group)) {
                 //重置字段分组
                 foreach ($fields_list as $k => $v) {
                     $fields_list[$k]['group'] = 1;
                 }
             }
         }
         $fields = $fields_list;
     }
     //获取所有的模型
     $models = M('Model')->where(array('extend' => 0))->field('id,title')->select();
     $this->assign('models', $models);
     $this->assign('fields', $fields);
     $this->assign('info', $data);
     $this->meta_title = '编辑模型';
     $this->display();
 }
 /**
  * 处理模型数据列表显示
  * @param array $list 列表数据
  * @param integer $model_id 模型id
  */
 protected function parseDataList($list, $model_id = null)
 {
     $attrList = get_model_attribute($model_id ? $model_id : 1, false, 'id,name,type,extra');
     // 对列表数据进行显示处理
     if (is_array($list)) {
         foreach ($list as $k => $data) {
             foreach ($data as $key => $val) {
                 if (isset($attrList[$key])) {
                     $extra = $attrList[$key]['extra'];
                     $type = $attrList[$key]['type'];
                     if ('select' == $type || 'checkbox' == $type || 'radio' == $type || 'bool' == $type) {
                         // 枚举/多选/单选/布尔型
                         $options = parse_field_attr($extra);
                         if ($options && array_key_exists($val, $options)) {
                             $data[$key] = $options[$val];
                         }
                     } elseif ('date' == $type) {
                         // 日期型
                         $data[$key] = date('Y-m-d', $val);
                     } elseif ('datetime' == $type) {
                         // 时间型
                         $data[$key] = date('Y-m-d H:i', $val);
                     }
                 }
                 if ($key == 'product') {
                     $info = M('Document')->field('title')->find($val);
                     if ($info !== false && $info['title']) {
                         $data[$key] = $info['title'];
                     }
                 }
                 if ($key == 'manage' || $key == 'user' || $key == 'uid') {
                     $info = M('Member')->field('nickname')->find($val);
                     if ($info !== false && $info['nickname']) {
                         $data[$key] = $info['nickname'];
                     }
                 }
             }
             $list[$k] = $data;
         }
     }
     return $list;
 }