rabin 7 years ago
parent
commit
1dd33ca603

+ 8 - 0
boot.php

@@ -0,0 +1,8 @@
+<?php
+define('DEVER_PROJECT', 'applet');
+define('DEVER_PROJECT_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+if (defined('DEVER_PACKAGE')) {
+	include('dever_package/'.DEVER_PACKAGE.'/index.php');
+} else {
+	include('dever/boot.php');
+}

+ 38 - 0
config/base.php

@@ -0,0 +1,38 @@
+<?php
+
+# 一些基本配置
+$config['base'] = array
+(
+	# 名称
+	'name' => '橙猫小程序',
+	# 版本配置
+	'version' => '1.0.0 Beta',
+);
+
+$config['template'] = array
+(
+	# 使用的模板 注意:定义这个之后,将会强制将本项目模板(assets中的html、template)变成这个
+	'assets' => 'default',
+	# 定义这个之后,将强制将template的目录改为这个,不定义或不填写,则强制使用为template定义
+	'template' => 'default',
+	# 替换设置 一般用于替换资源,将模板中的(html中的)js等相对url换成绝对url,如果不定义,则默认为../js这样的
+	'replace' => array
+	(
+		'css' => '../css/',
+		'js' => '../js/',
+		'img' => array('../image/', '../img/', '../images/'),
+		'core' => '../../core/',
+		'lib' => '../lib/',
+		'manage' => '../manage/',
+		
+		# 以下的替换主要用于合并操作(host里的merge项)
+		'font' => '../fonts/',
+	),
+	
+	'strip' => true,
+
+	# 是否启用layout 如启用,填写要替换的class或者id即可,具体效果可参考youtube,只加载部分内容,前端请加载pjax.js
+	'layout' => '.pjax-content',
+);
+
+return $config;

+ 11 - 0
config/dyna.php

@@ -0,0 +1,11 @@
+<?php
+# 动态配置,可以用于seo配置,请在项目下建立该配置文件
+
+return array
+(
+	# 首页 可与route相同
+	'home' => array
+	(
+		
+	)
+);

+ 242 - 0
config/env/localhost/applet.php

@@ -0,0 +1,242 @@
+<?php
+# 集成项目的大部分配置,此为默认设置。环境不同,以下的配置也有可能不同,可以根据项目名建立配置文件
+
+# 基本配置
+$config['base'] = array
+(
+	# 项目部署的相对路径(部署在服务器的根目录,如果不定义DEVER_PROJECT_NAME,则本项必须启用并有效)
+	'path' => DIRECTORY_SEPARATOR . 'workspace' . DIRECTORY_SEPARATOR,
+
+	# 访问assets目录的物理路径
+	'assets' => DEVER_APP_PATH . 'assets' . DIRECTORY_SEPARATOR,
+
+	# 访问data目录的物理路径
+	'data' 	=> DEVER_PROJECT_PATH . 'data' . DIRECTORY_SEPARATOR,
+
+	# 访问当前项目目录的物理路径,如果项目和dever类库在一个目录中,则为DEVER_PATH,如果不在,则为DEVER_APP_PATH,当然也可随意更改,这里目前只影响合并操作(merge)
+	'workspace' => DEVER_APP_PATH,
+	
+	# 定义api的token明文,如果和其他业务有合作,建议使用系统自带的接口api,自带加密解密程序。
+	'token' => 'dever_api_2016',
+	
+	# 是否启用nocache,如果是互动类的项目且主域增加了cdn,建议开启
+	'clearHeaderCache' => false,
+
+	# api文档生成是否开启,开启后,将会根据访问来生成文档。生产环境建议禁止
+	'apiDoc' => true,
+	# api日志是否开启,开启后,将会记录所有带有_api后缀方法的请求参数和响应参数
+	'apiLog' => false,
+
+	# 定义自动转为api的目录,可以将该目录下的所有类的公共方法,都转为可以访问的api,开启该功能可能有安全性问题。
+	'apiOpenPath' => 'src',
+
+	# 启用后,将会根据api目录下的配置文件自动定位api
+	//'apiConfig' => true,
+	
+	# 开启用户触发cron,主要用于无法加到系统计划任务的虚拟主机,必须安装manage组件,谨慎开启,会稍微影响程序执行效率
+	//'cron' => true,
+);
+
+# 模板配置
+$config['template'] = array
+(
+	# 是否启用静态资源域名动态化,启用之后,静态资源的域名将动态加载,适合使用多个域名或publish启用
+	'domain' => true,
+
+	# 是否开启强制刷新页面缓存
+	'shell' => 'temp',
+	
+	# 是否开启手动更改模板名称,允许通过$_GET的方式来更改当前模板,值为$_GET的key值,默认关闭
+	//'name' => 'template',
+
+	# publish 是否发布,此项开启后,系统不会检测service(意味着不用将service打包上线),适合生产环境,并能对代码起到一定的加密保护。
+	//'publish' => true,
+);
+
+# 数据库配置
+$config['database'] = array
+(
+	# database 中的reuqest的兼容定义,如果启用了该选项,需要自行开发database/compatible目录下相对应的数据表文件中的request方法。
+	//'compatible' => 'model',
+
+	# 是否开启sql自动优化,将sql中的select * 转换为 select a,b形式,将sql中的where条件按照索引从左到右自动排序,必须打开上述的opt选项,数据量大时建议打开。
+	//'sql' => true,
+
+	# 关闭自助建表,生产环境建议开启,开启之后无法对数据表结构进行更新操作
+	//'create' => true,
+
+	# 是否开启mysql自助优化功能,开启后,会记录所有where条件和order的字段,可以方便的在后台进行分析、增加索引,必须安装manage组件
+	'opt' => true,
+
+	# 默认数据库配置
+	'default' => array
+	(
+		'type' => 'pdo',
+		'host' => array
+		(
+			'read' => 'web-mysql:3306',
+			'update' => 'web-mysql:3306',
+		),
+		'database' => 'dever',
+		'username' => 'root',
+		'password' => '123456',
+		'charset' => 'utf8',
+	),
+
+	'mongo' => array
+	(
+		'type' => 'mongo',
+		'host' => 'server-mongodb:27017',
+		'database' => 'dever',
+		'username' => 'root',
+		'password' => '123456',
+		'charset' => 'utf8',
+	),
+);
+
+# 缓存配置
+$config['cache'] = array
+(
+	# 启用mysql数据库缓存,这个缓存是根据表名自动生成,dever::load形式和service的all、one形式均自动支持,无需手动添加
+	'mysql' => 0,
+	# 启用页面缓存 会根据当前的url来生成缓存,相当于页面静态化。
+	'html' => 0,
+	# 启用数据级别缓存 这个缓存是程序员自定义的:Dever::cache('name', 'value', 3600);
+	'data' => 3600,
+	# 启用load加载器缓存,一般不加载
+	'load' => 0,
+	# 启用load加载器的远程加载缓存
+	'curl' => 3600,
+
+	# 缓存精细控制,可以根据缓存的key(mysql为表名、service为小写类名,规则是模糊匹配),来控制每一条缓存
+	'loadKey' => array
+	(
+		# 定义缓存名为auth.data的缓存时间
+		'auth.data' => 200,
+	),
+	
+	# 缓存清理的参数名,请通过shell=clearcache执行
+	'shell' => 'clearcache',
+
+	# 是否启用key失效时间记录,启用之后,将会记录每个key的失效时间
+	'expire' => true,
+
+	# 缓存类型
+	'type' => 'memcache',//memcache、redis
+
+	# 缓存保存方式,支持多个数据源、多台缓存服务器
+	'store' => array
+	(
+		/*
+		array
+		(
+			'host' => 'server_memcached',
+			'port' => '11211',
+			'weight' => 100,
+		),
+
+		array
+		(
+			'host' => 'server_memcached',
+			'port' => '11212',
+			'weight' => 100,
+		),
+		*/
+	),
+);
+
+# debug配置
+$config['debug'] = array
+(
+	# 开启错误提示 生产环境建议禁止
+	'error' => true,
+	
+	# 错误日志记录,为空则不开启,为数组则为socket等服务
+	'log' => true,//array('type' => 'udp', 'host' => 'host', 'port' => 'port')
+	# 是否开启记录超时时间,单位为秒
+	'overtime' => 3,
+
+	# 开始访问报告
+	# 生产环境建议禁止或添加ip限制,多个ip用逗号隔开
+	# 如禁止,值为false,下述shell也将失效
+	# 值为2,则开启强制模式,任何输出都将打印debug
+	'request' => Dever::ip(),
+
+	# 设定打印访问报告的指令
+	'shell' => 'debug',
+	# 以上指令,请通过&shell=debug来执行,如果你想设置断点或者打印当前业务逻辑下的sql,请直接用Dever::debug();打印数据
+
+);
+$local = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost';
+# 本地可用这个
+$host = 'http://'.$local . '/';
+
+# 定义assets的域名
+$assets = DEVER_APP_HOST . 'assets/';
+if (DEVER_APP_NAME == 'manage') {
+	$assets = $host . 'dever_package/manage/assets/';
+}
+
+# host 设置
+$config['host'] = array
+(
+	# 跟域名
+	'base' 	=> DEVER_APP_HOST,
+
+	# cookie 域名
+	'cookie' => '',
+	
+	# assets网络路径,会自动将assets替换为assets/模板
+	'assets' => $assets,
+	# public
+	'public' => $assets . 'public/',
+	'css' => $assets . 'css/',
+	'js' => $assets . 'js/',
+	'img' => $assets . 'img/',
+	'images' => $assets . 'images/',
+	'lib' => $assets . 'lib/',
+
+	# 后台管理系统的assets路径
+	'manage' => $host . 'dever_package/manage/assets/public/',
+	
+	# 合并之后的网络路径,填写之后自动合并资源,不填写则不合并,适合把资源放到云端
+	'merge' => $host . 'plant/data/assets/' . DEVER_PROJECT . '/',
+	
+	# 上传系统的上传路径的域名(不带action)
+	'upload'=> $host . 'plant/upload/?save',
+	# 上传系统的资源访问地址
+	'uploadRes'	=> $host . 'plant/data/upload/',
+
+	# 域名替换,支持*通配符
+	/*
+    'domain' => array
+    (
+        'rule' => function()
+        {
+            $source = $desc = 'http://';
+            if(function_exists('isHttps') && isHttps())
+            {
+                $desc = 'https://';
+            }
+
+            return array($source, $desc);
+        },
+        'replace' => array('*.selfimg.com.cn')
+    ),
+    */
+	
+	# 是否启用代理功能
+	//'proxy' => $host . 'dever/application/plant/main/?data.proxy?',
+
+	# 项目定义,Dever::load将自动转为这个配置,替换掉data/project/default.php里的数据
+	'project' => array
+	(
+		//'main' => array('url' => 'ff'),
+	),
+);
+
+if (DEVER_APP_NAME == 'manage') {
+	$config['host']['merge'] = false;
+}
+
+return $config;

+ 241 - 0
config/env/online/applet.php

@@ -0,0 +1,241 @@
+<?php
+# 集成项目的大部分配置,此为默认设置。环境不同,以下的配置也有可能不同,可以根据项目名建立配置文件
+$domain = '5dev.cn';
+/*
+需要定义的二级域名:
+manage_assets:/share/lib/php/dever_manage/assets/
+assets: /www/plant/main/assets/
+res: /data/
+passport: /passport/
+www: /main/
+manage: /manage/
+forum: /forum/
+doc: /doc/
+upload: /upload/
+*/
+# 基本配置
+$config['base'] = array
+(
+	# 项目部署的相对路径(部署在服务器的根目录,如果不定义DEVER_PROJECT_NAME,则本项必须启用并有效)
+	'path' => DIRECTORY_SEPARATOR . 'workspace' . DIRECTORY_SEPARATOR,
+
+	# 访问assets目录的物理路径
+	'assets' => DEVER_APP_PATH . 'assets' . DIRECTORY_SEPARATOR,
+
+	# 访问data目录的物理路径
+	'data' 	=> DEVER_PROJECT_PATH . 'data' . DIRECTORY_SEPARATOR,
+
+	# 访问当前项目目录的物理路径,如果项目和dever类库在一个目录中,则为DEVER_PATH,如果不在,则为DEVER_APP_PATH,当然也可随意更改,这里目前只影响合并操作(merge)
+	'workspace' => DEVER_APP_PATH,
+	
+	# 定义api的token明文,如果和其他业务有合作,建议使用系统自带的接口api,自带加密解密程序。
+	'token' => 'dever_api_2016',
+	
+	# 是否启用nocache,如果是互动类的项目且主域增加了cdn,建议开启
+	'clearHeaderCache' => false,
+
+	# api文档生成是否开启,开启后,将会根据访问来生成文档。生产环境建议禁止
+	'apiDoc' => true,
+	# api日志是否开启,开启后,将会记录所有带有_api后缀方法的请求参数和响应参数
+	'apiLog' => false,
+
+	# 定义自动转为api的目录,可以将该目录下的所有类的公共方法,都转为可以访问的api,开启该功能可能有安全性问题。
+	'apiOpenPath' => 'src',
+
+	# 启用后,将会根据api目录下的配置文件自动定位api
+	//'apiConfig' => true,
+	
+	# 开启用户触发cron,主要用于无法加到系统计划任务的虚拟主机,必须安装manage组件,谨慎开启,会稍微影响程序执行效率
+	//'cron' => true,
+);
+
+# 模板配置
+$config['template'] = array
+(
+	# 是否启用静态资源域名动态化,启用之后,静态资源的域名将动态加载,适合使用多个域名或publish启用
+	'domain' => true,
+
+	# 是否开启强制刷新页面缓存
+	'shell' => 'temp',
+	
+	# 是否开启手动更改模板名称,允许通过$_GET的方式来更改当前模板,值为$_GET的key值,默认关闭
+	//'name' => 'template',
+
+	# publish 是否发布,此项开启后,系统不会检测service(意味着不用将service打包上线),适合生产环境,并能对代码起到一定的加密保护。
+	//'publish' => true,
+);
+
+# 数据库配置
+$config['database'] = array
+(
+	# database 中的reuqest的兼容定义,如果启用了该选项,需要自行开发database/compatible目录下相对应的数据表文件中的request方法。
+	//'compatible' => 'model',
+
+	# 是否开启sql自动优化,将sql中的select * 转换为 select a,b形式,将sql中的where条件按照索引从左到右自动排序,必须打开上述的opt选项,数据量大时建议打开。
+	//'sql' => true,
+
+	# 关闭自助建表,生产环境建议开启,开启之后无法对数据表结构进行更新操作
+	//'create' => true,
+
+	# 是否开启mysql自助优化功能,开启后,会记录所有where条件和order的字段,可以方便的在后台进行分析、增加索引,必须安装manage组件
+	'opt' => true,
+
+	# 默认数据库配置
+	'default' => array
+	(
+		'type' => 'pdo',
+		'host' => array
+		(
+			'read' => 'web-mysql:3306',
+			'update' => 'web-mysql:3306',
+		),
+		'database' => 'plant',
+		'username' => 'root',
+		'password' => '123456',
+		'charset' => 'utf8',
+	),
+);
+
+# 缓存配置
+$config['cache'] = array
+(
+	# 启用mysql数据库缓存,这个缓存是根据表名自动生成,dever::load形式和service的all、one形式均自动支持,无需手动添加
+	'mysql' => 0,
+	# 启用页面缓存 会根据当前的url来生成缓存,相当于页面静态化。
+	'html' => 0,
+	# 启用数据级别缓存 这个缓存是程序员自定义的:Dever::cache('name', 'value', 3600);
+	'data' => 3600,
+	# 启用load加载器缓存,一般不加载
+	'load' => 0,
+	# 启用load加载器的远程加载缓存
+	'curl' => 3600,
+
+	# 缓存精细控制,可以根据缓存的key(mysql为表名、service为小写类名,规则是模糊匹配),来控制每一条缓存
+	'loadKey' => array
+	(
+		# 定义缓存名为auth.data的缓存时间
+		'auth.data' => 200,
+	),
+	
+	# 缓存清理的参数名,请通过shell=clearcache执行
+	'shell' => 'clearcache',
+
+	# 是否启用key失效时间记录,启用之后,将会记录每个key的失效时间
+	'expire' => true,
+
+	# 缓存类型
+	'type' => 'memcache',//memcache、redis
+
+	# 缓存保存方式,支持多个数据源、多台缓存服务器
+	'store' => array
+	(
+		/*
+		array
+		(
+			'host' => 'server_memcached',
+			'port' => '11211',
+			'weight' => 100,
+		),
+
+		array
+		(
+			'host' => 'server_memcached',
+			'port' => '11212',
+			'weight' => 100,
+		),
+		*/
+	),
+);
+
+# debug配置
+$config['debug'] = array
+(
+	# 开启错误提示 生产环境建议禁止
+	'error' => true,
+	
+	# 错误日志记录,为空则不开启,为数组则为socket等服务
+	'log' => true,//array('type' => 'udp', 'host' => 'host', 'port' => 'port')
+	# 是否开启记录超时时间,单位为秒
+	'overtime' => 3,
+
+	# 开始访问报告
+	# 生产环境建议禁止或添加ip限制,多个ip用逗号隔开
+	# 如禁止,值为false,下述shell也将失效
+	# 值为2,则开启强制模式,任何输出都将打印debug
+	'request' => Dever::ip(),
+
+	# 设定打印访问报告的指令
+	'shell' => 'debug',
+	# 以上指令,请通过&shell=debug来执行,如果你想设置断点或者打印当前业务逻辑下的sql,请直接用Dever::debug();打印数据
+
+);
+
+$local = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost';
+# 本地可用这个
+$host = 'http://'.$local . '/';
+
+# 定义assets的域名
+$assets = 'http://assets.'.$domain.'/';
+if (DEVER_APP_NAME == 'manage') {
+	$assets = 'http://manage_assets.'.$domain.'/';
+}
+
+# host 设置
+$config['host'] = array
+(
+	# 跟域名
+	'base' 	=> DEVER_APP_HOST,
+
+	# cookie 域名
+	'cookie' => '',
+	
+	# assets网络路径,会自动将assets替换为assets/模板
+	'assets' => $assets,
+	# public
+	'public' => $assets . 'public/',
+	'css' => $assets . 'css/',
+	'js' => $assets . 'js/',
+	'img' => $assets . 'img/',
+	'images' => $assets . 'images/',
+	'lib' => $assets . 'lib/',
+
+	# 后台管理系统的assets路径
+	'manage' => 'http://manage_assets.'.$domain.'/public/',
+	
+	# 合并之后的网络路径,填写之后自动合并资源,不填写则不合并,适合把资源放到云端
+	'merge' => 'http://res.'.$domain.'/assets/'. DEVER_PROJECT . '/',
+	
+	# 上传系统的上传路径的域名(不带action)
+	'upload'=> 'http://upload.'.$domain.'/?save',
+	# 上传系统的资源访问地址
+	'uploadRes'	=> 'http://res.'.$domain.'/upload/',
+
+	# 域名替换,支持*通配符
+	/*
+    'domain' => array
+    (
+        'rule' => function()
+        {
+            $source = $desc = 'http://';
+            if(function_exists('isHttps') && isHttps())
+            {
+                $desc = 'https://';
+            }
+
+            return array($source, $desc);
+        },
+        'replace' => array('*.selfimg.com.cn')
+    ),
+    */
+	
+	# 是否启用代理功能
+	//'proxy' => $host . 'dever/application/plant/main/?data.proxy?',
+
+	# 项目定义,Dever::load将自动转为这个配置,替换掉data/project/default.php里的数据
+	'project' => array
+	(
+		'test' => array('url' => '', 'path' => ''),
+	),
+);
+
+return $config;

+ 14 - 0
config/plugin.php

@@ -0,0 +1,14 @@
+<?php
+//插件配置
+$config = array
+(
+	# manage 下的 node类
+	'manage/node.get_api' => array
+	(
+		'start' => 'test.get',
+		//'end' => 'test.get',
+		//'cover' => 'test.get',
+	),
+);
+
+return $config;

+ 6 - 0
config/route.php

@@ -0,0 +1,6 @@
+<?php
+
+return array
+(
+	'home' => 'home',
+);

+ 381 - 0
content/database/news.php

@@ -0,0 +1,381 @@
+<?php
+
+# 定义几个常用的选项
+$option = array
+(
+	1 => '正常',
+	2 => '删除',
+);
+
+$author = function()
+{
+	$array = array();
+	$author = Dever::load('set/author-state');
+	if($author)
+	{
+		$array += $author;
+	}
+	return $array;
+};
+
+$info = function()
+{
+	$array = array();
+	$info = Dever::load('set/info-state');
+	if($info)
+	{
+		$array += $info;
+	}
+	return $array;
+};
+
+$cate = function()
+{
+	$array = array();
+	$cate = Dever::load('set/cate-mainAll');
+	if($cate)
+	{
+		$array += $cate;
+	}
+	return $array;
+};
+
+$cate_child = function()
+{
+	$cate = Dever::load('set/cate-childAll');
+
+	return $cate;
+};
+
+# 栏目
+$search_cate = function()
+{
+	$array = array
+	(
+		-1 => array('id' => '-1', 'name' => '所有栏目'),
+	);
+	$cate = Dever::load('set/manage.cate');
+	if($cate)
+	{
+		$array += $cate;
+	}
+	return $array;
+};
+
+return array
+(
+	# 表名
+	'name' => 'news',
+	# 显示给用户看的名称
+	'lang' => '资讯管理',
+	'order' => 200,
+	# 数据结构
+	'struct' => array
+	(
+	
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'search'	=> 'order',
+			'list'		=> true,
+		),
+		
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-80',
+			'name' 		=> '标题',
+			'default' 	=> '',
+			'desc' 		=> '请输入主题标题',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'search'	=> 'fulltext',
+			'list'		=> true,
+		),
+
+		'info_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '所属小程序',
+			'default' 	=> '1',
+			'desc' 		=> '请选择所属小程序',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			'option'	=> $info,
+			//'search'	=> 'select',
+			'list'		=> '{info_id} > 0 ? Dever::load("set/info-one#name", {info_id}) : "未知"',
+		),
+
+		'author_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '作者',
+			'default' 	=> '1',
+			'desc' 		=> '请选择作者',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			'option'	=> $author,
+			//'search'	=> 'select',
+			'list'		=> '{author_id} > 0 ? Dever::load("set/author-one#name", {author_id}) : "未知"',
+		),
+		
+		'cate_id_parent'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '父级栏目',
+			'default' 	=> '0',
+			'desc' 		=> '请选择父级栏目',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			//'search'	=> 'order,select',
+			//'list'		=> '{cate_id_parent} > 0 ? Dever::load("set/cate-one#name", {cate_id_parent}) : "临时栏目"',
+			'option' 	=> $cate,
+			# 当值改变时,执行下一步操作
+			'child_name' => 'cate_id',
+			'child' => $cate_child,
+			'child_value' => '{cate_id}',
+		),
+		
+		'cate_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '子栏目',
+			'default' 	=> '0',
+			'desc' 		=> '请选择子栏目',
+			'match' 	=> 'is_numeric',
+			'search'	=> 'group',
+			'option' 	=> $search_cate,
+			'list_name'	=> '栏目',
+			'list'		=> '{cate_id} > 0 ? Dever::load("set/cate-one#name", {cate_id}) : "无子栏目"',
+		),
+		
+		'num_add_view'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '手动增加浏览量pv',
+			'default' 	=> '0',
+			'desc' 		=> '请填写手动增加浏览量pv',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+		),
+		
+		'num_up'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '赞数',
+			'default' 	=> '0',
+			'desc' 		=> '请填写赞数',
+			'match' 	=> 'option',
+			//'search'	=> 'order',
+			'list'		=> '"赞数:{num_up}<br />浏览量:{num_view}+{num_add_view}<br />回复数:{num_review}<br />"',
+			'list_name'	=> '统计数字',
+		),
+		
+		'num_view'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '浏览量pv',
+			'default' 	=> '0',
+			'desc' 		=> '请填写浏览量pv',
+			'match' 	=> 'option',
+			'search'	=> 'order',
+			//'list'		=> '{num_view}+{num_add_view}',
+		),
+		
+		'num_review'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '回复数',
+			'default' 	=> '0',
+			'desc' 		=> '请填写回复数',
+			'search'	=> 'order',
+			'match' 	=> 'option',
+			//'list'		=> true,
+		),
+		
+		'pic'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '封面-可以上传多个',
+			'default' 	=> '',
+			'desc' 		=> '请选择封面',
+			'match' 	=> 'is_string',
+			'update'	=> 'images',
+			'key' 		=> '1',
+			'place'		=> '150',
+		),
+
+		'top'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '头图',
+			'default' 	=> '',
+			'desc' 		=> '请选择头图',
+			'match' 	=> 'is_string',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '150',
+		),
+		
+		'content'		=> array
+		(
+			'type' 		=> 'text-800',
+			'name' 		=> '内容',
+			'default' 	=> '',
+			'desc' 		=> '请输入内容',
+			'match' 	=> 'is_string',
+			'update'	=> 'editor',
+			'key' 		=> 1,
+		),
+
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序(数值越大越靠前)',
+			'default' 	=> '1',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			'search'	=> 'order',
+			'list_name' => '排序',
+			'list'		=> true,
+			'order'		=> 'desc',
+			'edit'		=> true,
+		),
+
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+			'option' 	=> $option,
+			'update'	=> 'radio',
+			'list'		=> true,
+		),
+		
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+			'list'		=> 'date("Y-m-d H:i:s", {cdate})',
+		),
+	),
+	
+	# 索引
+	'index' => array
+	(
+		
+	),
+	
+	# 管理功能
+	'manage' => array
+	(
+		//'insert' => false,
+		# 列表
+		'list_button' => array
+		(
+			'list' => array('评论', '"comment&search_option_news_id={id}&oper_parent=news"'),
+		),
+	),
+	
+	# request 请求接口定义
+	'request' => array
+	(
+		'getAll' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'cate_id' => 'yes',
+				'cate_ids' => array('yes-cate_id', 'in'),
+				'id' => 'yes',
+			),
+			'type' => 'all',
+			'order' => array('top' => 'desc', 'id' => 'desc'),
+			'page' => array(15, 'list'),
+			'col' => '*',
+		),
+
+		'new' => array
+		(
+			# 匹配的正则或函数 选填项
+			'option' => array
+			(
+				'name' => array('yes', 'like'),
+				'cate_id' => 'yes',
+				'cate_id_parent' => 'yes',
+			),
+			'type' => 'all',
+			'order' => array('id', 'desc'),
+			'page' => array(15, 'list'),
+			'col' => '*',
+		),
+
+
+		
+		# 更新浏览量
+		'addView' => array
+		(
+			'type' => 'update',
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'set' => array
+			(
+				'num_view' => array('1', '+='),
+			),
+		),
+		
+		# 更新回复数
+		'addReview' => array
+		(
+			'type' => 'update',
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'set' => array
+			(
+				'num_review' => array('1', '+='),
+			),
+		),
+		
+		# 更新点赞数
+		'addUp' => array
+		(
+			'type' => 'update',
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'set' => array
+			(
+				'num_up' => array('1', '+='),
+			),
+		),
+		
+		# 更新点赞数
+		'desUp' => array
+		(
+			'type' => 'update',
+			'where' => array
+			(
+				'id' => 'yes',
+			),
+			'set' => array
+			(
+				'num_up' => array('1', '-='),
+			),
+		),
+	),
+);

+ 8 - 0
content/index.php

@@ -0,0 +1,8 @@
+<?php
+
+define('DEVER_APP_NAME', 'content');
+define('DEVER_APP_LANG', '内容管理');
+define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+define('DEVER_MANAGE_ORDER', 10);
+define('DEVER_MANAGE_ICON', 'glyphicon glyphicon-briefcase');
+include(DEVER_APP_PATH . '../boot.php');

+ 35 - 0
content/v1/Api.php

@@ -0,0 +1,35 @@
+<?php
+
+namespace Content\V1;
+
+use Dever;
+
+class Api
+{
+    public function __construct()
+    {
+        $this->id = Dever::input('id');
+    }
+
+    /**
+     * 获取栏目列表
+     *
+     * @return mixed
+     */
+    public function get()
+    {
+        $data = Dever::load('set/cate-main');
+
+        if ($data) {
+            $child = Dever::load('set/cate-child');
+
+            foreach ($data as $k => $v) {
+                if (isset($child[$k])) {
+                    $data[$k]['child'] = $child[$k];
+                }
+            }
+        }
+
+        return $data;
+    }
+}

File diff suppressed because it is too large
+ 4 - 0
data/compile/applet/manage/moltran/home.cmp.php


+ 19 - 0
data/compile/applet/manage/moltran/inc/chat.cmp.php

@@ -0,0 +1,19 @@
+
+            <div class="side-bar right-bar nicescroll">
+                <h4 class="text-center">Chat</h4>
+                <div class="contact-list nicescroll">
+                    <ul class="list-group contacts-list">
+                        <li class="list-group-item">
+                            <a href="#">
+                                <div class="avatar">
+                                    <img src="<?php echo Dever::config("host")->img ?>users/avatar-1.jpg" alt="">
+                                </div>
+                                <span class="name">Dever Admin</span>
+                                <i class="fa fa-circle online"></i>
+                            </a>
+                            <span class="clearfix"></span>
+                        </li>
+                    </ul>  
+                </div>
+            </div>
+            

+ 2 - 0
data/compile/applet/manage/moltran/inc/foot.cmp.php

@@ -0,0 +1,2 @@
+<?php $data['manage/database.res']=Dever::load('manage/database.res') ?>
+<footer class="footer text-right" style="<?php  echo Dever::load("manage/auth.loading") ? "display:none;" : "" ?>"><?php  echo Dever::config("base")->copyright ?></footer> <div id="load_script" style="display:none;"><?php echo $data['manage/database.res']['js'] ?></div>

File diff suppressed because it is too large
+ 1 - 0
data/compile/applet/manage/moltran/inc/head.cmp.php


File diff suppressed because it is too large
+ 3 - 0
data/compile/applet/manage/moltran/inc/menu.cmp.php


File diff suppressed because it is too large
+ 4 - 0
data/compile/applet/manage/moltran/inc/nav.cmp.php


File diff suppressed because it is too large
+ 0 - 0
data/compile/applet/manage/moltran/inc/script.cmp.php


File diff suppressed because it is too large
+ 12 - 0
data/compile/applet/manage/moltran/project/database/list.cmp.php


File diff suppressed because it is too large
+ 10 - 0
data/compile/applet/manage/moltran/project/database/update.cmp.php


+ 20 - 0
data/compile/applet/manage/node/default/project/database/list.php

@@ -0,0 +1,20 @@
+<?php return array (
+  'banner' => 
+  array (
+    'name' => 'banner设定',
+    'type' => 'render',
+    'param' => 
+    array (
+      0 => 'manage/database.banner',
+      1 => 
+      array (
+        '.topbar@style' => 
+        array (
+          0 => '',
+          1 => 'none',
+        ),
+        '.banner' => 'none',
+      ),
+    ),
+  ),
+);

+ 2 - 0
index.php

@@ -0,0 +1,2 @@
+<?php
+include('main/index.php');

+ 7 - 0
manage/daemon/loop.php

@@ -0,0 +1,7 @@
+<?php
+
+define('DEVER_DAEMON', true);
+
+include(dirname(__FILE__) . DIRECTORY_SEPARATOR . '../index.php');
+
+Dever::load('manage/project.loop');

+ 7 - 0
manage/daemon/main.php

@@ -0,0 +1,7 @@
+<?php
+
+define('DEVER_DAEMON', true);
+
+include(dirname(__FILE__) . DIRECTORY_SEPARATOR . '../index.php');
+
+Dever::load('manage/project.cron');

+ 4 - 0
manage/index.php

@@ -0,0 +1,4 @@
+<?php
+define('DEVER_PACKAGE',  'manage');
+define('DEVER_APP_SETUP', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+include(dirname(__FILE__) . DIRECTORY_SEPARATOR . '../boot.php');

+ 80 - 0
set/database/author.php

@@ -0,0 +1,80 @@
+<?php
+
+return array
+(
+	# 表名
+	'name' => 'author',
+	# 显示给用户看的名称
+	'lang' => '作者管理',
+	'order' => 99,
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '作者ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			//'search'	=> 'order',
+			'order'		=> 'desc',
+			'list'		=> true,
+		),
+		
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-60',
+			'name' 		=> '作者名称',
+			'default' 	=> '',
+			'desc' 		=> '请输入作者名称',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'search'	=> 'fulltext',
+			'list'		=> true,
+		),
+
+		'pic'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '头像',
+			'default' 	=> '',
+			'desc' 		=> '请选择头像',
+			'match' 	=> 'is_string',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '150',
+		),
+
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+		),
+		
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+			'list'		=> 'date("Y-m-d H:i:s", {cdate})',
+		),
+	),
+	
+	'manage' => array
+	(
+		
+	),
+	
+	# request 请求接口定义
+	'request' => array
+	(
+		
+	),
+);

+ 187 - 0
set/database/cate.php

@@ -0,0 +1,187 @@
+<?php
+
+$cate = function()
+{
+	$array = array(-1 => array('name' => '父级栏目'));
+	$cate = Dever::load('set/cate-mainAll');
+	if($cate)
+	{
+		$array += $cate;
+	}
+	return $array;
+};
+return array
+(
+	# 表名
+	'name' => 'cate',
+	# 显示给用户看的名称
+	'lang' => '栏目管理',
+	'order' => -1,
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '栏目ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			//'search'	=> 'order',
+			'order'		=> 'desc',
+			'list'		=> true,
+		),
+		
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-60',
+			'name' 		=> '栏目名称',
+			'default' 	=> '',
+			'desc' 		=> '请输入栏目名称',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'search'	=> 'fulltext',
+			'list'		=> true,
+		),
+		
+		'cate_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '上级栏目',
+			'default' 	=> Dever::input('option_cate_id', -1),
+			'desc' 		=> '请选择上级栏目',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'select',
+			'search'	=> 'order,select',
+			//'list'		=> '{cate_id} > 0 ? Dever::load("set/cate-one#name", {cate_id}) : "父级栏目"',
+			'option' 	=> $cate,
+		),
+		
+		'reorder'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '排序(数值越大越靠前)',
+			'default' 	=> '1',
+			'desc' 		=> '请输入排序',
+			'match' 	=> 'option',
+			'update'	=> 'text',
+			'search'	=> 'order',
+			'list_name' => '排序',
+			'list'		=> true,
+			'order'		=> 'desc',
+			'edit'		=> true,
+		),
+
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+		),
+		
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+			'list'		=> 'date("Y-m-d H:i:s", {cdate})',
+		),
+	),
+	
+	'manage' => array
+	(
+		# 列表页的类型
+		'list_type' => 'parent',
+
+		'list_button' => array
+		(
+			'add' => array('新增子栏目', '"cate&option_cate_id={id}"', '{cate_id}<=0'),
+			//6 => '删除'
+		),
+	),
+	
+	# request 请求接口定义
+	'request' => array
+	(
+		# info 取一条正常的数据
+		'info' => array
+		(
+			'where' => array
+			(
+				'id' => 'is_numeric',
+				'state' => 1,
+			),
+			'type' => 'one',
+		),
+		
+		'link' => array
+		(
+			'where' => array
+			(
+				'link' => 'is_string',
+				'state' => 1,
+			),
+			'type' => 'one',
+		),
+		
+		# main 取所有主栏目
+		'main' => array
+		(
+			'where' => array
+			(
+				'cate_id' => -1,
+				'state' => 1,
+				'type' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder` desc,`id', 'desc'),
+			'col' => '*|id',
+		),
+		
+		# 取所有下级栏目
+		'child' => array
+		(
+			'where' => array
+			(
+				'cate_id' => array('1', '>='),
+				'state' => 1,
+				'type' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder` desc,`id', 'desc'),
+			'col' => '*|cate_id|id|',
+		),
+		
+		
+		# main 取所有主栏目
+		'mainAll' => array
+		(
+			'where' => array
+			(
+				'cate_id' => -1,
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder` desc,`id', 'desc'),
+			'col' => '*|id',
+		),
+		
+		# 取所有下级栏目
+		'childAll' => array
+		(
+			'where' => array
+			(
+				'cate_id' => array('1', '>='),
+				'state' => 1,
+			),
+			'type' => 'all',
+			'order' => array('reorder` desc,`id', 'desc'),
+			'col' => '*|cate_id|id|',
+		),
+	),
+);

+ 104 - 0
set/database/info.php

@@ -0,0 +1,104 @@
+<?php
+
+return array
+(
+	# 表名
+	'name' => 'info',
+	# 显示给用户看的名称
+	'lang' => '小程序管理',
+	'order' => -10,
+	# 数据结构
+	'struct' => array
+	(
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			//'search'	=> 'order',
+			'order'		=> 'desc',
+			'list'		=> true,
+		),
+		
+		'name'		=> array
+		(
+			'type' 		=> 'varchar-60',
+			'name' 		=> '小程序名称',
+			'default' 	=> '',
+			'desc' 		=> '请输入小程序名称',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'search'	=> 'fulltext',
+			'list'		=> true,
+		),
+
+		'logo'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> 'logo图片-大小为150X150px',
+			'default' 	=> '',
+			'desc' 		=> '请选择logo图片',
+			'match' 	=> 'is_string',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '150',
+		),
+
+		'title'		=> array
+		(
+			'type' 		=> 'varchar-60',
+			'name' 		=> '首页标题',
+			'default' 	=> '',
+			'desc' 		=> '请输入首页标题',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'search'	=> 'fulltext',
+			'list'		=> true,
+		),
+		
+		'pic'		=> array
+		(
+			'type' 		=> 'varchar-150',
+			'name' 		=> '首页头图',
+			'default' 	=> '',
+			'desc' 		=> '请选择首页头图',
+			'match' 	=> 'is_string',
+			'update'	=> 'image',
+			'key' 		=> '1',
+			'place'		=> '150',
+		),
+
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+		),
+		
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '录入时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+			'list'		=> 'date("Y-m-d H:i:s", {cdate})',
+		),
+	),
+	
+	'manage' => array
+	(
+
+	),
+	
+	# request 请求接口定义
+	'request' => array
+	(
+		
+	),
+);

+ 8 - 0
set/index.php

@@ -0,0 +1,8 @@
+<?php
+
+define('DEVER_APP_NAME', 'set');
+define('DEVER_APP_LANG', '小程序设置');
+define('DEVER_APP_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+define('DEVER_MANAGE_ORDER', 9);
+define('DEVER_MANAGE_ICON', 'glyphicon glyphicon-briefcase');
+include(DEVER_APP_PATH . '../boot.php');

+ 30 - 0
set/src/Manage.php

@@ -0,0 +1,30 @@
+<?php
+
+namespace Set\Src;
+
+use Dever;
+
+class Manage
+{
+	/**
+     * 获取所有栏目列表
+     *
+     * @return mixed
+     */
+    public function cate()
+    {
+        $data = Dever::load('set/cate-mainAll');
+
+        if ($data) {
+            $child = Dever::load('set/cate-childAll');
+
+            foreach ($data as $k => $v) {
+                if (isset($child[$k])) {
+                    $data[$k]['child'] = $child[$k];
+                }
+            }
+        }
+
+        return $data;
+    }
+}

+ 4 - 0
upload/index.php

@@ -0,0 +1,4 @@
+<?php
+define('DEVER_PACKAGE',  'upload');
+define('DEVER_APP_SETUP', dirname(__FILE__) . DIRECTORY_SEPARATOR);
+include(dirname(__FILE__) . DIRECTORY_SEPARATOR . '../boot.php');

Some files were not shown because too many files changed in this diff