rabin %!s(int64=2) %!d(string=hai) anos
pai
achega
ef9a85f99c
Modificáronse 6 ficheiros con 115 adicións e 53 borrados
  1. 34 28
      database/data.php
  2. 14 2
      database/func.php
  3. 1 1
      database/page.php
  4. 5 0
      database/page_module.php
  5. 42 14
      lib/Data.php
  6. 19 8
      lib/Manage.php

+ 34 - 28
database/data.php

@@ -14,7 +14,12 @@ $list = function()
 {
     return Dever::db('page/module')->state();
 };
+
 $info = Dever::input('search_option_module_id', 1);
+$module_id = Dever::input('update_module_id');
+if ($module_id) {
+    $info = $module_id;
+}
 Dever::setInput('search_option_module_id', $info);
 $type_default = -1;
 $type_id = '0';
@@ -134,36 +139,37 @@ if ($info) {
             }
             $key = 'col_' . $v['id'];
     		$list = false;
-            if (!in_array($v['id'], $info['col'])) {
-                $update_type = 'hidden';
-            } else {
-                if ($v['type'] == 1) {
-                    $update_type = 'text';
-                    if ($v['id'] != 3) {
-                        $lang[] = $key;
-                    }
-                    
-                    $list = true;
-                } elseif ($v['type'] == 2) {
-                    $update_type = 'textarea';
-                    $lang[] = $key;
-                    $list = true;
-                } elseif ($v['type'] == 3) {
-                    $update_type = 'editor';
+
+            if ($v['type'] == 1) {
+                $update_type = 'text';
+                if ($v['id'] != 3) {
                     $lang[] = $key;
-                } elseif ($v['type'] == 4) {
-                    $update_type = 'image';
-                    $pic_index++;
-                } elseif ($v['type'] == 5) {
-                    $update_type = 'images';
-                    $pic_index++;
-                } elseif ($v['type'] == 6) {
-                    $update_type = 'radio';
-                } elseif ($v['type'] == 7) {
-                    $update_type = 'checkbox';
-                } elseif ($v['type'] == 8) {
-                    $update_type = 'day';
                 }
+                
+                $list = 'Dever::load("page/lib/manage.getData", "'.$v['id'].'", {id})';
+            } elseif ($v['type'] == 2) {
+                $update_type = 'textarea';
+                $lang[] = $key;
+                $list = 'Dever::load("page/lib/manage.getData", "'.$v['id'].'", {id})';
+            } elseif ($v['type'] == 3) {
+                $update_type = 'editor';
+                $lang[] = $key;
+            } elseif ($v['type'] == 4) {
+                $update_type = 'image';
+                $pic_index++;
+            } elseif ($v['type'] == 5) {
+                $update_type = 'images';
+                $pic_index++;
+            } elseif ($v['type'] == 6) {
+                $update_type = 'radio';
+            } elseif ($v['type'] == 7) {
+                $update_type = 'checkbox';
+            } elseif ($v['type'] == 8) {
+                $update_type = 'day';
+            }
+            if (!in_array($v['id'], $info['col'])) {
+                $update_type = 'hidden';
+                $list = false;
             }
 
             if ($v['is_option'] == 1) {

+ 14 - 2
database/func.php

@@ -6,7 +6,7 @@ $col = function()
     (
         -1 => array('id' => '-1', 'name' => '请选择字段',),
     );
-    $info = Dever::db('push/col')->state();
+    $info = Dever::db('page/col')->state();
     if($info)
     {
         $array += $info;
@@ -70,10 +70,22 @@ return array
             'control'	=> 'type',
         ),
 
+        'search'		=> array
+		(
+			'type' 		=> 'varchar-200',
+			'name' 		=> '数据检索-直接输入项目/表名即可',
+			'default' 	=> '',
+			'desc' 		=> '数据检索',
+			'match' 	=> 'is_string',
+			'update'	=> 'textarea',
+			//'search'	=> 'fulltext',
+			//'list'		=> true,
+		),
+
 		'api'		=> array
 		(
 			'type' 		=> 'varchar-200',
-			'name' 		=> '功能定义-如果是接口类型,这里可以直接输入http接口地址,也可以使用dever接口,如果接口返回一条数据,就为单条,如果是多条,就是列表;如果是特殊类型,直接输入类型的值即可',
+			'name' 		=> '数据获取-如果是接口类型,这里可以直接输入http接口地址,也可以使用dever接口,如果接口返回一条数据,就为单条,如果是多条,就是列表;如果是特殊类型,直接输入类型的值即可',
 			'default' 	=> '',
 			'desc' 		=> '功能接口',
 			'match' 	=> 'is_string',

+ 1 - 1
database/page.php

@@ -43,7 +43,7 @@ return array
             'default'   => '',
             'desc'      => '页面标识',
             'match'     => 'is_string',
-            'update'    => Dever::input('where_id') ? 'hidden' : 'text',
+            'update'    => 'text',
             'search'    => 'fulltext',
             'list'      => true,
         ),

+ 5 - 0
database/page_module.php

@@ -56,6 +56,11 @@ return array
 		),
 	),
 
+	'manage' => array
+	(
+		'lang' => 'name,desc',
+	),
+
 	# request 请求接口定义
 	'request' => array
 	(

+ 42 - 14
lib/Data.php

@@ -6,6 +6,28 @@ use Dever;
 
 class Data
 {
+    # 直接获取某个页面的基本信息
+    public function getPageInfo($key = false)
+    {
+        if (!$key) {
+            $page = Dever::input('page');
+            if ($page) {
+                $key = $page;
+            } else {
+                $key = Dever::uri();
+            }
+        }
+        
+        if (!$key) {
+            $key = 'home';
+        }
+        
+        $where['key'] = $key;
+        $data = Dever::db('page/page')->find($where);
+
+        return $data;
+    }
+
     # 直接获取某个页面的内容
     public function getPage($path = 'module', $cdate = 'Y-m-d H:i', $config = array())
     {
@@ -85,21 +107,26 @@ class Data
                 $module['num'] = $limit;
             }
 
-            $where = array();
-            $where['module_id'] = $module['id'];
+            if ($module['content'] == 1 && $total > 0) {
+                Dever::setInput('search_option_module_id', $module['id']);
+                $where = array();
+                $where['module_id'] = $module['id'];
 
-            if ($page) {
-                $where['page'] = array($module['num'], 'list');
-                $data = Dever::db('page/data')->getAllPage($where);
-            } else {
-                $where['limit'] = '0,' . $module['num'];
-                $data = Dever::db('page/data')->getAll($where);
-            }
+                if ($page) {
+                    $where['page'] = array($module['num'], 'list');
+                    $data = Dever::db('page/data')->getAllPage($where);
+                } else {
+                    $where['limit'] = '0,' . $module['num'];
+                    $data = Dever::db('page/data')->getAll($where);
+                }
 
-            if ($data) {
-                foreach ($data as $k => $v) {
-                    $data[$k] = $this->getOne($v, 2, $cdate);
+                if ($data) {
+                    foreach ($data as $k => $v) {
+                        $data[$k] = $this->getOne($v, 2, $cdate);
+                    }
                 }
+            } else {
+                $data = $module;
             }
         }
 
@@ -110,7 +137,6 @@ class Data
     public function getOne($module, $state = 2, $cdate = 'Y-m-d H:i')
     {
         $data = is_array($module) ? $module : Dever::db('page/data')->one($module);
-
         $source = array();
         $module = array();
         $col = array();
@@ -139,7 +165,6 @@ class Data
         } else {
             $key = 'col_';
         }
-
         foreach ($data as $k => $v) {
             $s = strstr($k, $key);
             if ($lang && strstr($k, 'col_') && !$s) {
@@ -171,6 +196,9 @@ class Data
 
                     $result[$k][$col_module['name']] = $v;
                 } else {
+                    if (strstr($col_module['key'], 'link')) {
+                        $v = Dever::url($v, 'main');
+                    }
                     $result[$col_module['key']] = $v;
                 }
             }

+ 19 - 8
lib/Manage.php

@@ -20,20 +20,13 @@ class Manage
         $func = $func();
         $method = false;
         if ($func && $type && isset($func[$type])) {
-            $method = $func[$type]['api'];
+            $method = $func[$type]['search'];
         }
 
         if (!$method) {
             Dever::alert('暂无数据');
         }
 
-        if (strstr($method, '.')) {
-            $temp = explode('.', $method);
-        } elseif (strstr($method, '-')) {
-            $temp = explode('-', $method);
-        }
-        $method = $temp[0];
-
         if ($yes) {
             $yes = Dever::db($method)->search(array('ids' => $yes));
         }
@@ -98,4 +91,22 @@ class Manage
         }
         return $data;
     }
+
+    public function getData($col, $id)
+    {
+        $data = Dever::db('page/data')->find($id);
+
+        if ($data['type'] > 0) {
+            $func = Dever::db('page/func')->find($data['type']);
+            $info = Dever::load($func['api'], $id);
+            $func['col'] = Dever::json_decode($func['col']);
+            foreach ($func['col'] as $k => $v) {
+                if ($v['col_id'] == $col) {
+                    return $info[$v['name']];
+                }
+            }
+        }
+
+        return $data['col_' . $col];
+    }
 }