pull/19/head
warlee 2015-03-23 04:54:54 +08:00
parent 9b8639ccca
commit 336ea34ea2
903 changed files with 35073 additions and 44480 deletions

500
ChangeLog.md Executable file
View File

@ -0,0 +1,500 @@
###ver3.0 `2014/3/23`
-----
####update:
- 文档分享[文件、文件夹分享;支持添加密码;文件分享支持多种格式在线预览]
- 回收站;(避免误删除)
- 系统设置(自定义程序的一些配置)
- 头部菜单管理
- 文件夹下载,多选批量下载
- 数据全面安全优化
- 上传优化:
- 分片上传不再受php.ini环境限制
- 加入上传速度
- 上传目录:随着当前目录变化而变化。
- 上传完成可点击,进入文件所在目录
- 界面简化(不显示切换到当前目录;保存路径不要,列表不自动删除;不需要最大化,以及调整窗口大小)
- 上传总status ——放到标题栏
- 大文件分片上传尝试(失败情况处理)
- 上传文件夹不刷新f5 - 最后刷新
- 显示文件名,大小;
- 允许重复文件上传
- 上传前可以删除
- 进图展示优化:显示文件大小、速度、完成进度
- 编辑器:
- 编辑器 函数列表c9 IDE;展示并定位实时更新php function、jsfunction
- 函数列表开启与关闭配置
- php代码自动补全 缺少关键字部分
- 下拉列表;点击其他地方则消失
- 非txt则open不能open则tips bindary:fla ...;右键加入:强制编辑
- 字体优化
- 修复github主题光标位置错位问题(选中、编辑都会出现)
- 离线下载优化:加入取消机制;避免持续执行;显示文件大小、速度、完成进度
- 图片缓存按照文件MD5来缓存与路径无关
- 文件列表hover的title更多详细信息展示
- 对话框,标题栏右键加入:刷新、新窗口打开
- 对话框双击最大化、取消最大化(只对可以缩放的对话框有效)
- 对话框最大化、最小化对话框放大按钮图标改变
- 权限前端验证(上传等 上传格式前端限制);前端检测 - 新建、上传、删除
- 设置中心 - -用户管理 非管理员显示优化
- 公共js部分采用动态调用方式后续优化可由js完成前端MVC
- 文件、文件夹创建快捷方式
- 文件夹创建工程项目
- 未知文件打开提示、不自动下载
- 右键菜单:加入字母快捷打开
- 右键自适应:隐藏 - -zip - 视频;多选时:含有视频音频文件时才显示——加入播放列表
- 右键触发到菜单上(暂时修改jquery-contentMenu 屏蔽右键按下移动触发菜单功能)
- 拖拽优化框选、tasktap切换选中其他文字问题性能问题
- 框选文件,超出屏幕则自定滚动选中;屏蔽文字可以被选中的问题
- simple主题界面UI优化
- seajs texttpl修改为html
- 统一走proxy隐藏真实地址;web_root,web_host,
- 统一proxy后office打开权限问题解决加密方式生成临时访问地址
- 播放器更多格式支持wmv、avi、mpg等
####fix bug and 优化:
- win下 中文路径导致的问题处理
- public中拖拽问题 复制粘贴问题
- 桌面任务栏,右键菜单绑定丢失问题
- 对话框,标题栏右键菜单不显示问题处理
- 用户名支持中文
- 密码含有特殊字符bug处理
- 播放器解决第一次打开有时候无法播放的问题。
- 桌面新建位置问题;列表在不同情况下新建问题。始终放在最后
- firefox兼容性 mac兼容性ie9 10兼容性
- appstore 创建、修复只允许管理员操作,显示优化
- app创建js代码类型时,单引号导致不可用问题。
- 循环跳转 session判断 if(!isset($_SESSION)){session_start();}
- win下 中文扩展名导致获取目录列表问题:扩展名获取优化
- 编辑器保存 ajax 异步请求。loading
- 上传目录错误问题;(上传到了其他目录 ie8 中文)
- 优化mac下gd库支持
- 窗口拖动到task之下出不来问题。top大于一定值则锁定
- 多个同域名;登陆退出互不干扰
- office变更 https://view.officeapps.live.com/op/view.aspx?src=
- appstore icon方式默认减少
- 列表模式重命名oexe没修改但自动加入了oexe不显示
- 非管理员zip压缩导致文件名被截断问题修复win-win 中文解压缩处理mac-mac中文解压缩处理
- 下载有BOM问题
- wwwroot识别问题
###ver2.8 `2014/11/23`
-----
####update:
- 上传控件优化
- 兼容性优化支持ie8以上
- 更新font-awesome到最新版本
####fix bug:
- 安全优化
- 上传图片取消大文件压缩选项
- 优化部分操作下显示问题
###ver2.73 `2014/9/17`
####fix bug:
- 安全优化补丁
###ver2.72 `2014/9/16`
####fix bug:bug解决和程序优化
- 任意执行远程下载apache 扩漏洞:判断扩展名中是否含有.php.
- 不存在的用户
- 桌面开始按钮被tab盖住了
- 主题切换,错位问题
- 透明对话框拖动时 标题栏不显示问题
###ver2.71 `2014/8/31`
-----
####update:
- 编辑器配置保存:文字大小、主题风格;主题修改
- 精简初始桌面应用
####fix bug:bug解决和程序优化
- 修改用户密码失败:
- 打开设置设置壁纸,关掉,再打开个人中心,桌面乱掉
- 桌面开始菜单 最大化问题
- 语言选择下拉菜单错位
- 修改主题重叠问题
- appstore 添加应用tips不见
###ver2.7 `2014/8/25`
-----
####update:
- 安全及性能优化
- 静态文件加入?版本标识,版本更新后不缓存
- webuploader 升级到0.14 优化部分上传问题
- 错误级别error_reporting(E_ERROR | E_WARNING);
- 地址栏(tab模式、编辑模式)两种模式宽度自适应
- 自建office解析服务器配置
- 最大化全屏
####fix bug:bug解决和程序优化
- install 加入iconv、mbstring检测
- 右键重命名 快捷键冒泡处理
- 文件列表图片缩略图拖拽问题
- 标题超出部分截取优化
- 编辑器预览滚动条自适应
###ver2.61 `2014/7/12`
-----
####update:
- 实时搜索,根据搜索框内容变化,实时选中匹配到的结果;
- 弹出搜索框遍历子文件夹递归搜索
- session key 加入kod_前缀 避免和其他系统key冲突
- 编辑器选中优化 选择鼠标到窗口外事件处理
####fix bug:bug解决和程序优化
- backspace后退截获浏览器事件,作为后退前一次访问的文件夹;
- 搜索首字母不匹配问题
- 弹出层中的弹出层关闭,父窗口失去焦点问题。
- 代码中grunt部分代码拆分开放到程序外面提交到git、osc
- 桌面删除alert enter快捷键删除
- install 检测 加入跳过,(只判断用到的函数) 加入多语言
- zip压缩没有权限 提示红色,false 统一查找
- 登录成功后 验证码输错清除
- 非root用户拖拽到文件夹问题
- 非root解压问题 不能解压
- list oexe 图标问题
- 用户目录不存在判断
- fileCahe 互斥锁 reset 不用
- ie 8~10样式问题调整
###ver2.6 `2014/7/6`
-----
####update:
- 完全性优化;加入严格的校验机制
- 首次运行环境检测[data目录检测必须的函数支持提示]
- 上传已存在处理——创建副本(另外包括粘贴,解压)
- 选中优化 ctrl选中拖拽
- 键盘快捷键选中文件,多个字符支持
- 文件文件夹权限修改(右键——属性,即可修改)
- 对话框加入ico,对应任务栏
- 右键等部分菜单效果优化
- 远程下载加入进度条,下载速度等信息
####fix bug:bug解决和程序优化
- 下载前判断当前目录可写
- 文件扩展名处理,分为用户方式和扩展名权限方式
- 上传结束提示:是否成功、失败原因
- 上传扩展名限制 解决apache .php.*当做php执行bug
- 文件名非法字符限定 <script>
- 树目录展开箭头状态修复
- 树目录新建文件,没有子节点刷新bug解决
- 文件大小为0上传不了问题
- windows下进入某些系统文件夹死循环bug解决
- tips 居中显示
- 任务栏标签选中问题:已经显示且为交点窗口 点击——隐藏;否则——显示,并且置为焦点窗口
- 拖入url ——oexe 新窗口打开
- 选中文件时,移动到屏幕可视区域(解决上下左右选中文件滚动条不一致问题)
###ver2.51 `2014/6/22`
-----
####fix bug:bug解决和程序优化
- 登陆多次密码输入错误验证码bug解决
- 修复漏洞:创建副本加入权限控制。和拖文件拽权限一致
- 文件上传失败检测
- 树目录同步优化
###ver2.5 `2014/6/15`
-----
####update:
- 增加创建副本功能 按住ctrl拖拽即可可以到当前也可以到文件夹。
- 多选拖拽优化:剪切到、移动到某个文件夹
- 创建副本功能
- 树目录和文件列表一致性保持 更新相互通知
####fix bug:bug解决和程序优化
- 桌面重命名bug
- 统一对话框部分bug
- php notice 提示解决
- ajax返回非json 则展示服务错误的返回
- 所有入口都加入index.php 解决部分服务器没有设置默认入口问题
###ver2.4 `2014/6/8`
####update:
- 语言选择
- 远程下载文件名优化
- 树目录事件优化
- 收藏夹点击 undefined
- 没权限建立文件夹错误提示 红色
- 打开dialog 不显示问题。先显示后打开
- ajax error 系统错误 对话框提示内容
- 懒加载优化
###ver2.3 `2014/6/2`
-----
####update:
- 拖动url——创建ext app
- 文件管理,树目录变化后(增删改)自动同步到文件列表
- 文件管理,文件列表变化后(增删改)自动同步到树目录
- 中文用户名限制
- 对话框打开关闭动画
- 其他多处优化
####fix bug:bug解决和程序优化
- 文件名限制bug
- 同目录多个程序cookie bug修复
- 地址栏 最后显示宽度问题
- 服务器路径下 编辑器预览404修复
- 树目录显示优化
- 登陆记住密码优化
###ver2.2 `2014/5/11`
-----
####update:
- 公共目录支持(多个用户可以共享目录,写权限跟随用户组权限设定)
- 自动升级优化
- 文件管理工具栏 增加菜单选项,方便移动设备操作
- 文件编辑器,文件树目录 上下左右键盘切换 快捷键加入
- 树目录去掉库,改为个人目录等多处文案修改
- 默认打开用户目录
####fix bug:bug解决和程序优化
- 桌面任务栏点不中bug
- 部分文案问题
- 众多细节优化
###ver2.1 `2014/4/2`
-----
####update:
- 文件夹拖拽上传,完美解决(保持原始目录结构)
- 解压缩优化;解压中文问题。解压缩整体速度
- 树目录增加快捷键支持(上下、左右展开树目录;复制、粘贴、剪切、删除、打开、搜索、新建文件(夹)、)
- pdf预览支持
- mac快捷键 ctrl 一一对应command
- 音乐播放器和视频播放器相互独立
- 图片懒加载、图片较多的情况下只加载首屏图片缩略图;
- 编辑文件打开出错,自动关闭标签;文件打开20M限制(大于20M则不处理,浏览器会卡死)
- 标签关闭提示:检测是否有未保存文件,文件修改实时修改是否修修改的按钮状态
####fix bug:bug解决和程序优化
- 文本文件编辑 文件名含有url编码则出错bug
- 右键菜单在最下面时,右键位置重叠导致点击菜单问题
- 编辑器打开文件时光标问题处理移动到行尾编辑器enter建不显示自动提示
- iframe 打开url 优化。解决canvas问题
- 文件编辑器,载入loading去掉
- 删除错误时,或上传错误时也刷新目录。删除提示颜色错误
- 对话框右键 点击右键菜单隐藏修复
- 手机端 touch =双击
- 文件列表 explorer 右键 不清除选才·
- 树目录中文展开问题。
- ie 重命名状态textarea不可选则问题
- 修复mac 下 ctrl连选出现右键菜单。
- ie 树目录右键兼容性
-
###ver2.0 `2014/3/2`
-----
####fix bug:bug解决和程序优化
- body右键屏蔽(保留input、textarea)
- 重命名&新建时 右键(编辑内容系统菜单)
- 对话框 不显示边框(位移处理,opacity0
- esc 退出程序 屏蔽该功能。
- 关闭播放器,还在播放bug
- 增加资源管理器任务栏。任务栏加入右键功能。
- 对话框增加右键功能
- guest [三类用户 root/default/guest] guest登陆处加链接。20min
- 打包程序[update user_add,admin/demo; 删除webuploader.js thumb less]
- 编辑添加应用权限只能是root用户才可以。
- 保存文件不可写提示!
- 解压缩结果提示。(对话框)
####upload
- dialog display
- root登陆 目录修改为服务器路径
- artdialog 已经打开的窗口 (设了id) 最小化时,再次打开则显示
- 最小化窗口后,再次打开 dialog display (setting-display)
- 上传进度加入大小
- 上传窗口关闭,自动停止所有上传队列
- 拖拽后,更新上传地址为当前地址。(之前上传队列也会这样。bug)
- root用户非服务器路径下文件预览图片、mp3、视频、html、swf、……php代理输出文件内容,http方式
- 对话框最小化或关闭,重置最大index为焦点窗口
- 图片缩略图生成小于5k则不生成直接输出
- 加载文件列表改为异步方式,数据返回采用回调函数方式。增强体验
- 选中优化,文件&文件夹重命名、文件&文件夹新建 后自动选中。(f5增加回调。)
- 选中保持,选中后如果调整排序等等,保持选中状态。
- 上传文件选中当前。
- f5改为异步(加入mask loading) 优化文件夹打开体验
- 键盘按键选中文件 增加字符搜索定位功能(单个字符,增加到多个字符选中。两次响应直接延迟250ms)
- 幻灯片播放[优化成fancybox或者 重写动画部分、打开时关不掉问题]
- 编辑器backspace、delete时不提示。
- 编辑器,增加选中效果
- 增加不自动提示功能,配置项作为全局配置。影响后续建立的文件。选中标记状态。
- 更换桌面背景图片【load后替换】
- 更换主题【css load 后载入】
- 删除。不清除选中。提前准备数据
- 构建打包,合并压缩。添加版本、版权
- 自动升级(本地记录版本,服务器js调用 参数 url、###version忽略此版本。cookie。统计用户)
###ver2.0 debug `2014/3/2`
-----
####fix bug:bug解决和程序优化
- 优化文件打开处理
- 文件&文件夹:含有%、+号的处理(显示不出等问题,encoenURIComponent——rawurldecode)
- 文件下载,支持大文件下载、断点续传。
- 解决更改排序方式后 ——对应右键菜单不同步问题。
- 优化右键更改列表状态,同步保存配置到服务端。
- 文件浏览器打开(a点击新窗口跳转,a不支持click,用子元素冒泡来实现点击)
- 优化配置文件存储方案。直接由前端操作后端key,value
- 修复添加收藏夹问题(已打开设置窗口再添加失败问题)
- 修复树目录中文文件名bug
- 优化pic图片幻灯片播放
- 优化新建文件&文件夹 清空选择状态
- 对话框组件 ie8 优化tips不显示任务栏
- 优化地址栏过长编辑状态问题
- 优化新建、重命名文件(夹) 高度自适应问题
- firefox ctrl+s 系统对话框屏蔽
- 树目录:收藏夹优化(右键绑定);右键操作优化,拖拽优化(文件管理&编辑器)
- 收藏夹优化(右键 >编辑删除)
####update:
**新增功能**
- 多用户、权限控制:
- 可以建立权限组,将功能分配给权限组
- 添加用户,选择所属的权限组。
- 权限按功能划分成颗粒,可以任意配置,例如普通使用者、游客等
- 搜索:支持递归搜索,可选择是否搜索文件内容。
- 增加桌面自定义壁纸。
- 皮肤优化 ok 多色彩支持。
- 应用商店,root用户可以管理应用。安装、修改、删除。普通用户可以安装应用。
- 应用添加了图标。对应右键功能。
- office文档在线预览。
**上传下载**
- 采用全新上传控件,跟安全,更好的体验。
- 拖拽支持文件夹,多个文件。上传自动过滤不允许的文件类型
- 拖拽上传 和上统一优化,修复webuploader的文件判断火狐拖拽上传,ie9+拖拽上传。
- 上传时自动过滤不合格的文件,上传失败错误返回。
**文件编辑**
- 编辑器支持多光标
- 支持几乎所有编程语言的代码高亮
- 支持代码自动补全(基于文档、或自定义的代码快照)
- 快速预览功能
- 优化文件保存完美解决。编码自动识别转换。字符串转义问题。1&#'[{'"+~%25\\\\ ////
- 文件编辑,添加收藏夹
- 优化音乐播放器,添加音乐后自动播放新添加的第一首;解决之前添加列表后暂停问题。
- 优化任务栏,多标签最小化flash问题left+10000 visiable
- ctrl,shift 多选时拖拽优化(按住这两个键时,不能拖动拖动加入延迟200ms
- 编辑器在没打开文件的情况下工具栏不可用问题。
- 搜索、替换vim模式
- ……
**登陆退出**
- 登陆优化 ok【页面&验证码&记住密码】
- 三次错误需要输入验证码,保证系统的安全性
- 优化自动登录安全性,客户端保存cookie自动登录信息。【tooken加入本地ip】
**系统优化**
- 解决较慢操作,阻塞其他操作问题。同一个用户session会加锁,入口处做释放)
- 前后端代码基本全部重构,前端采用模块化方法sea.js|require.js 模块化。
- 凡是有模板调用的display——页面部分php解析。并将配置注入到页面js变量,便于js使用
- 加入模板机制;通用模块采用懒加载模式使用artTemplate 对模板绑定数据。
- kv结构存储
- 路由权限控制
- 后端统一json输出。
###ver1.21 `2013/11/6`
-----
####fix bug:
- 修复文件下载bug
- 修复编辑器自动补全问题,<aa bb /> ——> <aa bb></a>
- 兼容部分服务器问题。
###ver1.2 `2013/10/16`
-----
####fix bug:
- 设置,外部通用调用方式
- 打包中文乱码问题。
- simple,default主题,navbar 下拉菜单右边位置问题。
- 文件管理:有滚动条时,上下超过可视区域框选问题修复,统一和win操作一致。
- 文件大小写不敏感设置,扩展名获取bug
- 目录读取权限判断,解决“系统错误”相关问题。
####update:
- 地址栏宽度自适应优化,支持浏览器窗口调整
- 增加远程下载功能;上传功能优化,
- 整体样式风格优化,
- 右键菜单优化(可持续粘贴,剪切后粘贴清空剪贴板)。
- 新建文件、文件重命名高度自适应优化
- 关闭调试状态错误信息
- 图片播放幻灯片优化,支持浏览器窗口调整,解决事件绑定bug,添加图片倒影;添加关闭按钮,关闭动画等功能
- 优化桌面,弹出层层级问题;任务栏为最上层
- 优化多标签,没有标签时不显示标签容器,放至层级覆盖
- 地址栏超出宽度,自动隐藏最左边内容
- 右键菜单状态同步,排序方式初始化当前值,设置后标记当前值。
- 优化编辑器:拖动内容&文件到编辑区,内容处理。
- 拖拽上传,信息框自动隐出后关闭
- setting,editor,player最小化时,再次调用则显示出弹出层
- 优化影音播放器,皮肤及相关配置信息存储于js中,不用之前的服务器请求方式,修改皮肤后可以直接更新到界面上。
###ver1.01 `2013/9/10`
-----
####fix bug:
- 添加到收藏
- simple,default主题,navbar 下拉菜单右边位置问题。
####update:
- 添加到收藏夹,修改收藏夹,更新文件管理收藏夹部分。
- 修改主题,同时修改编辑器主题。【编辑区,文件管理,桌面】
- 优化setting部分代码,整合为一个整体。
- 优化debug,增加less编译,导出功能优化,先编译后复制再操作
###ver1.0 `2013.9.1`
-----
####update:
- 代码模块化优化,静态文件分离,可以分开部署
- 编辑器单独逻辑提取,完整融合到文件管理,树目录融合文件管理,懒加载语法高亮
- 多标签实现,弹层对话框多标签支持,桌面任务栏实现;编辑器多标签支持
- 弹层功能优化,实现最大最小化,最小化关联多标签任务栏管理
####fix bug:
- linux 下浏览器打开文件和文件夹,中文问题
- 重命名&新建&上传 刷新列表使用动画,当前选中失效问题,不使用动画加载方式。
- html5拖拽上传优化
###ver0.8 `2013.6.15`
-----
####update:
- 整体优化,实现全部操作ajax本地化 ,进一步提升体验
- 浏览器强刷新,保持之前最后所在路径
- 重命名,新建,粘贴操作后添加选中状态
- 代码主题列表优化,重新设计,提高可配置性
- 优化代码,添加getTplList模版,简化关联配置获取
- 增加设置功能,ajax刷新设置。缩略图片增加tips预览(被注释frame/setting.php)
- 增加重命名只选择名称部分功能
- 增加iframe js api互操作ie支持。四大浏览器内核皆支持。
- 文件夹打开,采用ajax实现。包括头部地址栏,父级目录,左边树目录以及收藏夹
- 历史记录完美实现,前进后退按钮实时变化状态。
- 快捷键backspace实现后退(left header main 分别加入函数,屏蔽默认history(-1)操作) -
####fix bug:
- 完善修改windows以及linux获取文件列表,中文路径属性获取失败问题。
- 复制,剪切。剪贴板内容覆盖判空处理
- 修复一些地方ajax线程同步问题,重命名后选中失效问题解决
- 修复返回上层目录,根目录检测
- 修复linux下 音视频播放,中文路径问题
- 修复文件右键菜单位置出错问题
- 修复ie下frame js相互通信问题
- ajax更新文件列表下,各种bug修复。进一步提升操作友好性
- 修复当前目录改变的情况下,播放器消失的问题。现在能使播放器始终保留

516
README.md Normal file → Executable file
View File

@ -1,459 +1,57 @@
##KodExplorer (http://kalcaddle.com/)
###ver2.73(2014.9.17)
`商业版授权请联系kalcaddle#qq.com`
#### 1.是什么:
- Kodexplorer为千帆网络工作室开发的一款服务器文件管理程序。
- 完美取代FTP管理可用于服务器文件管理,zip解压缩、备份还原、支持图片、音乐、视频预览、office、pdf等格式在线预览。文件夹拖拽上传……。
- 在线编程:支持几乎所有编程语言的在线编辑(高亮,多光标编辑.堪比本地的sublime)
- 极佳的操作体验:及其便捷的快捷键支持,让你拥有本地化的体验
- 中文等多语言支持:中文编码全面兼容,文件编辑自动适配。
- 超快的速度全面采用Ajax+Json进行数据通信,毫秒级的响应速度;
- 全平台兼容性Win Linux Mac (Apache、Nginx、IIS)
#### 2.使用场景:
- 取代FTP,服务端、客户端软件等复杂的安装配置。kod可以一键安装随处使用.
- 你可以用它来管理你的服务器(备份,在线解压缩,版本发布....)
- 你可以把他当做管理linux的一个操作系统界面
- 可以用来作为私有云存储系统,存储你的文件...
- 当然你也可以用来分享文件
- Web IDE
- 更多场景等你来挖掘!……
#### 3.使用说明
管理员: admin/admin
普通用户demo/demo
游客用户guest/guest
[如何使用] 下载程序,解压上传到你的服务器路径下,data目录设置777权限。访问体验超便捷的服务吧
(为确保数据安全,最好配置服务器不允许列目录)
[关于上传问题] 程序没有做任何限制,如果需要上传大文件,则修改
php.ini`upload_max_filesize = 1000M post_max_size = 1000M` [详情http://955.cc/R2yT]
[关于解压缩问题] 程序不做任何限制,如若失败请设置php内存限制。memory_limit 1000M
[关于"系统错误"] 请配置php错误提示级别error_reporting; 配置php.ini或者允许error_reporting函数
[关于兼容性] 建议使用chrome firefox ie9+ 体验更完整。ie8以下基本上不做兼容处理。chrome支持文件夹拖拽上传。
[文件打开] office文件在线预览功能,服务器必须在公网(外部能访问该服务器);
内部或局域网需要使用请参考qq群共享“web office搭建”,然后配置kod程序config/config.php OFFICE_SERVER
[安全提示] 为确保数据安全请设置http服务器不允许列目录。[详情http://955.cc/R2vw]
[忘记密码] 修改data/system/member.php 密码为明文的md5值 例如将admin密码重设为admin
则修改第一行:"name":"admin","password":"21232f297a57a5a743894a0e4a801fc3"
![](https://cloud.githubusercontent.com/assets/3761968/2583304/764f562a-b9cf-11e3-8e59-afdbdffc20eb.png)
###ver2.73 `2014/9/17`
####fix bug:
- 安全优化补丁
###ver2.72 `2014/9/16`
####fix bug:bug解决和程序优化
- 任意执行远程下载apache 扩漏洞:判断扩展名中是否含有.php.
- 不存在的用户
- 桌面开始按钮被tab盖住了
- 主题切换,错位问题
- 透明对话框拖动时 标题栏不显示问题
###ver2.71 `2014/8/31`
----
####update:
- 编辑器配置保存:文字大小、主题风格;主题修改
- 精简初始桌面应用
####fix bug:bug解决和程序优化
- 修改用户密码失败:
- 打开设置设置壁纸,关掉,再打开个人中心,桌面乱掉
- 桌面开始菜单 最大化问题
- 语言选择下拉菜单错位
- 修改主题重叠问题
- appstore 添加应用tips不见
###ver2.7 `2014/8/25`
----
####update:
- 安全及性能优化
- 静态文件加入?版本标识,版本更新后不缓存
- webuploader 升级到0.14 优化部分上传问题
- 错误级别error_reporting(E_ERROR | E_WARNING);
- 地址栏(tab模式、编辑模式)两种模式宽度自适应
- 自建office解析服务器配置
- 最大化全屏
####fix bug:bug解决和程序优化
- install 加入iconv、mbstring检测
- 右键重命名 快捷键冒泡处理
- 文件列表图片缩略图拖拽问题
- 标题超出部分截取优化
- 编辑器预览滚动条自适应
###ver2.61 `2014/7/12`
----
####update:
- 实时搜索,根据搜索框内容变化,实时选中匹配到的结果;
- 弹出搜索框遍历子文件夹递归搜索
- session key 加入kod_前缀 避免和其他系统key冲突
- 编辑器选中优化 选择鼠标到窗口外事件处理
####fix bug:bug解决和程序优化
- backspace后退截获浏览器事件,作为后退前一次访问的文件夹;
- 搜索首字母不匹配问题
- 弹出层中的弹出层关闭,父窗口失去焦点问题。
- 代码中grunt部分代码拆分开放到程序外面提交到git、osc
- 桌面删除alert enter快捷键删除
- install 检测 加入跳过,(只判断用到的函数) 加入多语言
- zip压缩没有权限 提示红色,false 统一查找
- 登录成功后 验证码输错清除
- 非root用户拖拽到文件夹问题
- 非root解压问题 不能解压
- list oexe 图标问题
- 用户目录不存在判断
- fileCahe 互斥锁 reset 不用
- ie 8~10样式问题调整
###ver2.6 `2014/7/6`
----
####update:
- 完全性优化;加入严格的校验机制
- 首次运行环境检测[data目录检测必须的函数支持提示]
- 上传已存在处理——创建副本(另外包括粘贴,解压)
- 选中优化 ctrl选中拖拽
- 键盘快捷键选中文件,多个字符支持
- 文件文件夹权限修改(右键——属性,即可修改)
- 对话框加入ico,对应任务栏
- 右键等部分菜单效果优化
- 远程下载加入进度条,下载速度等信息
####fix bug:bug解决和程序优化
- 下载前判断当前目录可写
- 文件扩展名处理,分为用户方式和扩展名权限方式
- 上传结束提示:是否成功、失败原因
- 上传扩展名限制 解决apache .php.*当做php执行bug
- 文件名非法字符限定 <script>
- 树目录展开箭头状态修复
- 树目录新建文件,没有子节点刷新bug解决
- 文件大小为0上传不了问题
- windows下进入某些系统文件夹死循环bug解决
- tips 居中显示
- 任务栏标签选中问题:已经显示且为交点窗口 点击——隐藏;否则——显示,并且置为焦点窗口
- 拖入url ——oexe 新窗口打开
- 选中文件时,移动到屏幕可视区域(解决上下左右选中文件滚动条不一致问题)
###ver2.51 `2014/6/22`
----
####fix bug:bug解决和程序优化
- 登陆多次密码输入错误验证码bug解决
- 修复漏洞:创建副本加入权限控制。和拖文件拽权限一致
- 文件上传失败检测
- 树目录同步优化
###ver2.5 `2014/6/15`
----
####update:
- 增加创建副本功能 按住ctrl拖拽即可可以到当前也可以到文件夹。
- 多选拖拽优化:剪切到、移动到某个文件夹
- 创建副本功能
- 树目录和文件列表一致性保持 更新相互通知
####fix bug:bug解决和程序优化
- 桌面重命名bug
- 统一对话框部分bug
- php notice 提示解决
- ajax返回非json 则展示服务错误的返回
- 所有入口都加入index.php 解决部分服务器没有设置默认入口问题
###ver2.4 `2014/6/8`
####update:
- 语言选择
- 远程下载文件名优化
- 树目录事件优化
- 收藏夹点击 undefined
- 没权限建立文件夹错误提示 红色
- 打开dialog 不显示问题。先显示后打开
- ajax error 系统错误 对话框提示内容
- 懒加载优化
###ver2.3 `2014/6/2`
----
####update:
- 拖动url——创建ext app
- 文件管理,树目录变化后(增删改)自动同步到文件列表
- 文件管理,文件列表变化后(增删改)自动同步到树目录
- 中文用户名限制
- 对话框打开关闭动画
- 其他多处优化
####fix bug:bug解决和程序优化
- 文件名限制bug
- 同目录多个程序cookie bug修复
- 地址栏 最后显示宽度问题
- 服务器路径下 编辑器预览404修复
- 树目录显示优化
- 登陆记住密码优化
###ver2.2 `2014/5/11`
----
####update:
- 公共目录支持(多个用户可以共享目录,写权限跟随用户组权限设定)
- 自动升级优化
- 文件管理工具栏 增加菜单选项,方便移动设备操作
- 文件编辑器,文件树目录 上下左右键盘切换 快捷键加入
- 树目录去掉库,改为个人目录等多处文案修改
- 默认打开用户目录
####fix bug:bug解决和程序优化
- 桌面任务栏点不中bug
- 部分文案问题
- 众多细节优化
###ver2.1 `2014/4/2`
----
####update:
- 文件夹拖拽上传,完美解决(保持原始目录结构)
- 解压缩优化;解压中文问题。解压缩整体速度
- 树目录增加快捷键支持(上下、左右展开树目录;复制、粘贴、剪切、删除、打开、搜索、新建文件(夹)、)
- pdf预览支持
- mac快捷键 ctrl 一一对应command
- 音乐播放器和视频播放器相互独立
- 图片懒加载、图片较多的情况下只加载首屏图片缩略图;
- 编辑文件打开出错,自动关闭标签;文件打开20M限制(大于20M则不处理,浏览器会卡死)
- 标签关闭提示:检测是否有未保存文件,文件修改实时修改是否修修改的按钮状态
####fix bug:bug解决和程序优化
- 文本文件编辑 文件名含有url编码则出错bug
- 右键菜单在最下面时,右键位置重叠导致点击菜单问题
- 编辑器打开文件时光标问题处理移动到行尾编辑器enter建不显示自动提示
- iframe 打开url 优化。解决canvas问题
- 文件编辑器,载入loading去掉
- 删除错误时,或上传错误时也刷新目录。删除提示颜色错误
- 对话框右键 点击右键菜单隐藏修复
- 手机端 touch =双击
- 文件列表 explorer 右键 不清除选才·
- 树目录中文展开问题。
- ie 重命名状态textarea不可选则问题
- 修复mac 下 ctrl连选出现右键菜单。
- ie 树目录右键兼容性
-
###ver2.0 `2014/3/2`
----
####fix bug:bug解决和程序优化
- body右键屏蔽(保留input、textarea)
- 重命名&新建时 右键(编辑内容系统菜单)
- 对话框 不显示边框(位移处理,opacity0
- esc 退出程序 屏蔽该功能。
- 关闭播放器,还在播放bug
- 增加资源管理器任务栏。任务栏加入右键功能。
- 对话框增加右键功能
- guest [三类用户 root/default/guest] guest登陆处加链接。20min
- 打包程序[update user_add,admin/demo; 删除webuploader.js thumb less]
- 编辑添加应用权限只能是root用户才可以。
- 保存文件不可写提示!
- 解压缩结果提示。(对话框)
####upload
- dialog display
- root登陆 目录修改为服务器路径
- artdialog 已经打开的窗口 (设了id) 最小化时,再次打开则显示
- 最小化窗口后,再次打开 dialog display (setting-display)
- 上传进度加入大小
- 上传窗口关闭,自动停止所有上传队列
- 拖拽后,更新上传地址为当前地址。(之前上传队列也会这样。bug)
- root用户非服务器路径下文件预览图片、mp3、视频、html、swf、……php代理输出文件内容,http方式
- 对话框最小化或关闭,重置最大index为焦点窗口
- 图片缩略图生成小于5k则不生成直接输出
- 加载文件列表改为异步方式,数据返回采用回调函数方式。增强体验
- 选中优化,文件&文件夹重命名、文件&文件夹新建 后自动选中。(f5增加回调。)
- 选中保持,选中后如果调整排序等等,保持选中状态。
- 上传文件选中当前。
- f5改为异步(加入mask loading) 优化文件夹打开体验
- 键盘按键选中文件 增加字符搜索定位功能(单个字符,增加到多个字符选中。两次响应直接延迟250ms)
- 幻灯片播放[优化成fancybox或者 重写动画部分、打开时关不掉问题]
- 编辑器backspace、delete时不提示。
- 编辑器,增加选中效果
- 增加不自动提示功能,配置项作为全局配置。影响后续建立的文件。选中标记状态。
- 更换桌面背景图片【load后替换】
- 更换主题【css load 后载入】
- 删除。不清除选中。提前准备数据
- 构建打包,合并压缩。添加版本、版权
- 自动升级(本地记录版本,服务器js调用 参数 url、###version忽略此版本。cookie。统计用户)
###ver2.0 debug `2014/3/2`
----
####fix bug:bug解决和程序优化
- 优化文件打开处理
- 文件&文件夹:含有%、+号的处理(显示不出等问题,encoenURIComponent——rawurldecode)
- 文件下载,支持大文件下载、断点续传。
- 解决更改排序方式后 ——对应右键菜单不同步问题。
- 优化右键更改列表状态,同步保存配置到服务端。
- 文件浏览器打开(a点击新窗口跳转,a不支持click,用子元素冒泡来实现点击)
- 优化配置文件存储方案。直接由前端操作后端key,value
- 修复添加收藏夹问题(已打开设置窗口再添加失败问题)
- 修复树目录中文文件名bug
- 优化pic图片幻灯片播放
- 优化新建文件&文件夹 清空选择状态
- 对话框组件 ie8 优化tips不显示任务栏
- 优化地址栏过长编辑状态问题
- 优化新建、重命名文件(夹) 高度自适应问题
- firefox ctrl+s 系统对话框屏蔽
- 树目录:收藏夹优化(右键绑定);右键操作优化,拖拽优化(文件管理&编辑器)
- 收藏夹优化(右键 >编辑删除)
####update:
**新增功能**
- 多用户、权限控制:
- 可以建立权限组,将功能分配给权限组
- 添加用户,选择所属的权限组。
- 权限按功能划分成颗粒,可以任意配置,例如普通使用者、游客等
- 搜索:支持递归搜索,可选择是否搜索文件内容。
- 增加桌面自定义壁纸。
- 皮肤优化 ok 多色彩支持。
- 应用商店,root用户可以管理应用。安装、修改、删除。普通用户可以安装应用。
- 应用添加了图标。对应右键功能。
- office文档在线预览。
**上传下载**
- 采用全新上传控件,跟安全,更好的体验。
- 拖拽支持文件夹,多个文件。上传自动过滤不允许的文件类型
- 拖拽上传 和上统一优化,修复webuploader的文件判断火狐拖拽上传,ie9+拖拽上传。
- 上传时自动过滤不合格的文件,上传失败错误返回。
**文件编辑**
- 编辑器支持多光标
- 支持几乎所有编程语言的代码高亮
- 支持代码自动补全(基于文档、或自定义的代码快照)
- 快速预览功能
- 优化文件保存完美解决。编码自动识别转换。字符串转义问题。1&#'[{'"+~%25\\\\ ////
- 文件编辑,添加收藏夹
- 优化音乐播放器,添加音乐后自动播放新添加的第一首;解决之前添加列表后暂停问题。
- 优化任务栏,多标签最小化flash问题left+10000 visiable
- ctrl,shift 多选时拖拽优化(按住这两个键时,不能拖动拖动加入延迟200ms
- 编辑器在没打开文件的情况下工具栏不可用问题。
- 搜索、替换vim模式
- ……
**登陆退出**
- 登陆优化 ok【页面&验证码&记住密码】
- 三次错误需要输入验证码,保证系统的安全性
- 优化自动登录安全性,客户端保存cookie自动登录信息。【tooken加入本地ip】
**系统优化**
- 解决较慢操作,阻塞其他操作问题。同一个用户session会加锁,入口处做释放)
- 前后端代码基本全部重构,前端采用模块化方法sea.js|require.js 模块化。
- 凡是有模板调用的display——页面部分php解析。并将配置注入到页面js变量,便于js使用
- 加入模板机制;通用模块采用懒加载模式使用artTemplate 对模板绑定数据。
- kv结构存储
- 路由权限控制
- 后端统一json输出。
###ver1.21 `2013/11/6`
----
####fix bug:
- 修复文件下载bug
- 修复编辑器自动补全问题,<aa bb /> ——> <aa bb></a>
- 兼容部分服务器问题。
###ver1.2 `2013/10/16`
----
####fix bug:
- 设置,外部通用调用方式
- 打包中文乱码问题。
- simple,default主题,navbar 下拉菜单右边位置问题。
- 文件管理:有滚动条时,上下超过可视区域框选问题修复,统一和win操作一致。
- 文件大小写不敏感设置,扩展名获取bug
- 目录读取权限判断,解决“系统错误”相关问题。
####update:
- 地址栏宽度自适应优化,支持浏览器窗口调整
- 增加远程下载功能;上传功能优化,
- 整体样式风格优化,
- 右键菜单优化(可持续粘贴,剪切后粘贴清空剪贴板)。
- 新建文件、文件重命名高度自适应优化
- 关闭调试状态错误信息
- 图片播放幻灯片优化,支持浏览器窗口调整,解决事件绑定bug,添加图片倒影;添加关闭按钮,关闭动画等功能
- 优化桌面,弹出层层级问题;任务栏为最上层
- 优化多标签,没有标签时不显示标签容器,放至层级覆盖
- 地址栏超出宽度,自动隐藏最左边内容
- 右键菜单状态同步,排序方式初始化当前值,设置后标记当前值。
- 优化编辑器:拖动内容&文件到编辑区,内容处理。
- 拖拽上传,信息框自动隐出后关闭
- setting,editor,player最小化时,再次调用则显示出弹出层
- 优化影音播放器,皮肤及相关配置信息存储于js中,不用之前的服务器请求方式,修改皮肤后可以直接更新到界面上。
###ver1.01 `2013/9/10`
----
####fix bug:
- 添加到收藏
- simple,default主题,navbar 下拉菜单右边位置问题。
####update:
- 添加到收藏夹,修改收藏夹,更新文件管理收藏夹部分。
- 修改主题,同时修改编辑器主题。【编辑区,文件管理,桌面】
- 优化setting部分代码,整合为一个整体。
- 优化debug,增加less编译,导出功能优化,先编译后复制再操作
###ver1.0 `2013.9.1`
----
####update:
- 代码模块化优化,静态文件分离,可以分开部署
- 编辑器单独逻辑提取,完整融合到文件管理,树目录融合文件管理,懒加载语法高亮
- 多标签实现,弹层对话框多标签支持,桌面任务栏实现;编辑器多标签支持
- 弹层功能优化,实现最大最小化,最小化关联多标签任务栏管理
####fix bug:
- linux 下浏览器打开文件和文件夹,中文问题
- 重命名&新建&上传 刷新列表使用动画,当前选中失效问题,不使用动画加载方式。
- html5拖拽上传优化
###ver0.8 `2013.6.15`
----
####update:
- 整体优化,实现全部操作ajax本地化 ,进一步提升体验
- 浏览器强刷新,保持之前最后所在路径
- 重命名,新建,粘贴操作后添加选中状态
- 代码主题列表优化,重新设计,提高可配置性
- 优化代码,添加getTplList模版,简化关联配置获取
- 增加设置功能,ajax刷新设置。缩略图片增加tips预览(被注释frame/setting.php)
- 增加重命名只选择名称部分功能
- 增加iframe js api互操作ie支持。四大浏览器内核皆支持。
- 文件夹打开,采用ajax实现。包括头部地址栏,父级目录,左边树目录以及收藏夹
- 历史记录完美实现,前进后退按钮实时变化状态。
- 快捷键backspace实现后退(left header main 分别加入函数,屏蔽默认history(-1)操作) -
####fix bug:
- 完善修改windows以及linux获取文件列表,中文路径属性获取失败问题。
- 复制,剪切。剪贴板内容覆盖判空处理
- 修复一些地方ajax线程同步问题,重命名后选中失效问题解决
- 修复返回上层目录,根目录检测
- 修复linux下 音视频播放,中文路径问题
- 修复文件右键菜单位置出错问题
- 修复ie下frame js相互通信问题
- ajax更新文件列表下,各种bug修复。进一步提升操作友好性
- 修复当前目录改变的情况下,播放器消失的问题。现在能使播放器始终保留
## editor
![](https://cloud.githubusercontent.com/assets/3761968/2583309/7fd52f8a-b9cf-11e3-8052-b4f908fd5209.png)
## desktop
![](https://cloud.githubusercontent.com/assets/3761968/2583348/1b260572-b9d0-11e3-8f3e-3004dbbc63c9.png)
## player
![](https://cloud.githubusercontent.com/assets/3761968/2583312/84462bf0-b9cf-11e3-8b00-96fb3fc1610e.png)
KodExplorer(http://kalcaddle.com/)[![Built with Grunt](https://cdn.gruntjs.com/builtwith.png)](http://gruntjs.com/)
========
KodExplorer是一款开源的基于Web的在线文件管理、代码编辑器。它提供了类windows经典用户界面一整套在线文件管理、文件预览、编辑、上传下载、在线解压缩、音乐播放功能。让你直接在浏览器端实现web开发、源码文件预览、网站部署。同时拥有与本地操作一样方便、快捷、安全的体验。
`商业版授权请联系kalcaddle#qq.com`
#### 1.是什么:
- kodExplorer为千帆网络工作室开发的一款服务器文件管理程序。
- 完美取代FTP管理可用于服务器文件管理,zip解压缩、备份还原、支持图片、音乐、视频预览、office、pdf等格式在线预览。文件夹拖拽上传……。
- 在线编程:支持几乎所有编程语言的在线编辑(高亮,多光标编辑.堪比本地的sublime)
- 极佳的操作体验:及其便捷的快捷键支持,让你拥有本地化的体验
- 中文等多语言支持:中文编码全面兼容,文件编辑自动适配。
- 超快的速度全面采用Ajax+Json进行数据通信,毫秒级的响应速度;
- 全平台兼容性Win Linux Mac (Apache、Nginx、IIS)
#### 2.使用场景:
- 取代FTP,服务端、客户端软件等复杂的安装配置。kod可以一键安装随处使用.
- 你可以用它来管理你的服务器(备份,在线解压缩,版本发布....)
- 你可以把他当做管理linux的一个操作系统界面
- 可以用来作为私有云存储系统,存储你的文件...
- 当然你也可以用来分享文件
- Web IDE
- 更多场景等你来挖掘!……
#### 3.使用说明
管理员: admin/admin
普通用户demo/demo
游客用户guest/guest
[如何使用] 下载程序,解压上传到你的服务器路径下,data目录设置777权限。访问体验超便捷的服务吧
(为确保数据安全,最好配置服务器不允许列目录)
[关于上传问题] 程序没有做任何限制,如果需要上传大文件,则修改
php.ini`upload_max_filesize = 1000M post_max_size = 1000M` [详情http://955.cc/R2yT]
注意不能大于2g可能否则导致php无法正常运行(不支持post)。
[关于解压缩问题] 程序不做任何限制,如若失败请设置php内存限制。memory_limit 1000M
[关于解压缩乱码] linux服务器压缩下载到windows下中文会乱码。是由于系统导致的。所以尽量不要跨系统操作。
[关于"系统错误"] 请配置php错误提示级别error_reporting; 配置php.ini或者允许error_reporting函数
[关于兼容性] 建议使用chrome firefox ie9+ 体验更完整。ie8以下基本上不做兼容处理。chrome支持文件夹拖拽上传。
[文件打开] office文件在线预览功能,服务器必须在公网(外部能访问该服务器);
内部或局域网需要使用请参考qq群共享“web office搭建”,然后配置kod程序config/config.php OFFICE_SERVER
[安全提示] 为确保数据安全请设置http服务器不允许列目录。[详情http://955.cc/R2vw]
[忘记密码] 修改data/system/member.php 密码为明文的md5值 例如将admin密码重设为admin
则修改第一行:"name":"admin","password":"21232f297a57a5a743894a0e4a801fc3"
【文件拖拽上传】除了ie8以下的大部分浏览器支持建议使用chrome、360、猎豹、uc等
【文件夹拖拽上传】除了ie10以下、firefox大部分浏览器都支持建议使用chrome、360、猎豹、uc等
![](https://cloud.githubusercontent.com/assets/3761968/2583304/764f562a-b9cf-11e3-8e59-afdbdffc20eb.png)
## editor
![](https://cloud.githubusercontent.com/assets/3761968/2583309/7fd52f8a-b9cf-11e3-8052-b4f908fd5209.png)
## player
![](https://cloud.githubusercontent.com/assets/3761968/2583312/84462bf0-b9cf-11e3-8b00-96fb3fc1610e.png)
## desktop
![](https://cloud.githubusercontent.com/assets/3761968/2583348/1b260572-b9d0-11e3-8f3e-3004dbbc63c9.png)

163
config/config.php Normal file → Executable file
View File

@ -1,80 +1,83 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
date_default_timezone_set('PRC');
@ini_set('session.cache_expire',600);
@set_time_limit(600);//30min pathInfoMuti,search,upload,download...
@error_reporting(E_ERROR|E_WARING|E_PARSE);
function P($path){return str_replace('\\','/',$path);}
define('WEB_ROOT',str_replace(P($_SERVER['SCRIPT_NAME']),'',P(dirname(dirname(__FILE__))).'/index.php').'/');
define('HOST', 'http://'.$_SERVER['HTTP_HOST'].'/');
define('BASIC_PATH', P(dirname(dirname(__FILE__))).'/');
define('APPHOST', HOST.str_replace(WEB_ROOT,'',BASIC_PATH));//程序根目录
define('TEMPLATE', BASIC_PATH .'template/'); //模版文件路径
define('CONTROLLER_DIR',BASIC_PATH .'controller/'); //控制器目录
define('MODEL_DIR', BASIC_PATH .'model/'); //模型目录
define('LIB_DIR', BASIC_PATH .'lib/'); //库目录
define('FUNCTION_DIR', LIB_DIR .'function/'); //函数库目录
define('CLASS_DIR', LIB_DIR .'class/'); //内目录
define('CORER_DIR', LIB_DIR .'core/'); //核心目录
define('DATA_PATH', BASIC_PATH .'data/'); //用户数据目录
define('LOG_PATH', DATA_PATH .'log/'); //日志目录
define('USER_PATH', DATA_PATH .'User/'); //用户目录
define('USER_SYSTEM', DATA_PATH .'system/'); //用户数据存储目录
define('LANGUAGE_PATH', DATA_PATH .'i18n/'); //多语言目录
define('PUBLIC_PATH', DATA_PATH .'public/'); //公共共享目录 读写权限跟随用户目录的读写权限
define('OFFICE_SERVER', "");
//默认为空则调用微软解析api,需要外网才可以;
//如果内网或局域网使用,引号内填写配置好的地址前缀 形如:"http://***/view.aspx?src="
define('STATIC_JS','app');//_dev app js编译||开发状态
define('STATIC_LESS','css');
define('STATIC_PATH',"./static/");//静态文件目录
//define('STATIC_PATH','http://static.kalcaddle.com/static/');
include(FUNCTION_DIR.'web.function.php');
include(FUNCTION_DIR.'file.function.php');
include(CLASS_DIR.'fileCache.class.php');
include(CONTROLLER_DIR.'util.php');
include(CORER_DIR.'Application.class.php');
include(CORER_DIR.'Controller.class.php');
include(CORER_DIR.'Model.class.php');
include(FUNCTION_DIR.'common.function.php');
include(BASIC_PATH.'config/setting.php');
include(BASIC_PATH.'config/version.php');
//数据地址定义。
$config['pic_thumb'] = BASIC_PATH.'data/thumb/'; // 缩略图生成存放地址
$config['cache_dir'] = BASIC_PATH.'data/cache/'; // 缓存文件地址
$config['system_os'] = 'windows'; //windows,linux,mac
$config['system_charset']='gbk'; //系统编码
$config['app_charset'] ='utf-8'; //该程序整体统一编码
$config['app_startTime'] = mtime(); //起始时间
$config['check_charset'] = 'ASCII,UTF-8,GBK';//文件打开自动检测编码
//when edit a file ;check charset and auto converto utf-8;
//系统编码配置
if (strtoupper(substr(PHP_OS, 0,3)) === 'WIN') {
$config['system_os']='windows';
$config['system_charset']='gbk';
} else {
$config['system_os']='linux';
$config['system_charset']='utf-8';
}
init_lang();
$in = parse_incoming();//所有过滤处理。
session_start();
session_write_close();//之后要修改$_SESSION 需要先调用session_start()
$config['autorun'] = array(
array('controller'=>'user','function'=>'loginCheck'),
array('controller'=>'user','function'=>'authCheck')
);
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
@date_default_timezone_set(@date_default_timezone_get());
@set_time_limit(600);//10min pathInfoMuti,search,upload,download...
@ini_set('session.cache_expire',600);
@ini_set("display_errors","On");
@error_reporting(E_ERROR|E_WARING|E_PARSE);
//error_reporting(E_ALL);
function P($path){return str_replace('\\','/',$path);}
$web_root = str_replace(P($_SERVER['SCRIPT_NAME']),'',P(dirname(dirname(__FILE__))).'/index.php').'/';
if (substr($web_root,-10) == 'index.php/') {//解决部分主机不兼容问题
$web_root = P($_SERVER['DOCUMENT_ROOT']).'/';
}
define('WEB_ROOT',$web_root);
define('HOST','http://'.$_SERVER['HTTP_HOST'].'/');
define('BASIC_PATH', P(dirname(dirname(__FILE__))).'/');
define('APPHOST', HOST.str_replace(WEB_ROOT,'',BASIC_PATH));//程序根目录
define('TEMPLATE', BASIC_PATH .'template/'); //模版文件路径
define('CONTROLLER_DIR',BASIC_PATH .'controller/'); //控制器目录
define('MODEL_DIR', BASIC_PATH .'model/'); //模型目录
define('LIB_DIR', BASIC_PATH .'lib/'); //库目录
define('FUNCTION_DIR', LIB_DIR .'function/'); //函数库目录
define('CLASS_DIR', LIB_DIR .'class/'); //内目录
define('CORER_DIR', LIB_DIR .'core/'); //核心目录
define('DATA_PATH', BASIC_PATH .'data/'); //用户数据目录
define('LOG_PATH', DATA_PATH .'log/'); //日志目录
define('USER_PATH', DATA_PATH .'User/'); //用户目录
define('USER_SYSTEM', DATA_PATH .'system/'); //用户数据存储目录
define('DATA_THUMB', DATA_PATH .'thumb/'); //缩略图生成存放
define('LANGUAGE_PATH', DATA_PATH .'i18n/'); //多语言目录
define('PUBLIC_PATH', DATA_PATH .'public/'); //公共共享目录,读写权限跟随用户目录的读写权限
//本地使用引号内填写office解析服务器地址 形如:"http://***/view.aspx?src="
define('OFFICE_SERVER',"");
define('STATIC_JS','app'); //_dev(开发状态)||app(打包压缩)
define('STATIC_LESS','css');//less(开发状态)||css(打包压缩)
define('STATIC_PATH',"./static/");//静态文件目录
//define('STATIC_PATH','http://static.kalcaddle.com/static/');//静态文件统一分离
include(FUNCTION_DIR.'web.function.php');
include(FUNCTION_DIR.'file.function.php');
include(CLASS_DIR.'fileCache.class.php');
include(CONTROLLER_DIR.'util.php');
include(CORER_DIR.'Application.class.php');
include(CORER_DIR.'Controller.class.php');
include(CORER_DIR.'Model.class.php');
include(FUNCTION_DIR.'common.function.php');
include(BASIC_PATH.'config/setting.php');
include(BASIC_PATH.'config/version.php');
//数据地址定义。
$config['pic_thumb'] = BASIC_PATH.'data/thumb/'; // 缩略图生成存放地址
$config['cache_dir'] = BASIC_PATH.'data/cache/'; // 缓存文件地址
$config['system_os'] = 'windows'; //windows,linux,mac
$config['system_charset']='gbk'; //系统编码
$config['app_charset'] ='utf-8'; //该程序整体统一编码
$config['app_startTime'] = mtime(); //起始时间
$config['check_charset'] = 'ASCII,UTF-8,GBK';//文件打开自动检测编码
//when edit a file ;check charset and auto converto utf-8;
//系统编码配置
if (strtoupper(substr(PHP_OS, 0,3)) === 'WIN') {
$config['system_os']='windows';
$config['system_charset']='gbk';
} else {
$config['system_os']='linux';
$config['system_charset']='utf-8';
}
$in = parse_incoming();
session_start();
session_write_close();//避免session锁定问题;之后要修改$_SESSION 需要先调用session_start()
$config['autorun'] = array(
array('controller'=>'user','function'=>'loginCheck'),
array('controller'=>'user','function'=>'authCheck')
);

118
config/setting.php Normal file → Executable file
View File

@ -1,51 +1,67 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
// 配置项可选值
$config['setting_all'] = array(
'themeall' => "default/:<b>areo blue</b>:default,simple/:<b>simple</b>:simple,metro/:<b>metro</b>:metro,metro/blue_:metro-blue:color, metro/leaf_:metro-green:color,metro/green_:metro-green+:color,metro/grey_:metro-grey:color,metro/purple_:metro-purple:color,metro/pink_:metro-pink:color,metro/orange_:metro-orange:color",
'codethemeall' => "chrome,clouds,crimson_editor,eclipse,github,solarized_light,tomorrow,xcode,ambiance,idle_fingers,monokai,pastel_on_dark,solarized_dark,tomorrow_night_blue,tomorrow_night_eighties",
'wallall' => "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15",
'musicthemeall' => "ting,beveled,kuwo,manila,mp3player,qqmusic,somusic,xdj",
'moviethemeall' => "webplayer,qqplayer,vplayer,tvlive,youtube"
);
$config['setting_all']['language'] = "en:English,zh_CN:简体中文,zh_TW:簡體中文";
// 默认配置
$config['setting_default'] = array(
'list_type' => "icon", // list||icon
'list_sort_field' => "name", // name||size||ext||mtime
'list_sort_order' => "up", // asc||desc
'theme' => "metro/", // app theme
'codetheme' => "github", // code editor theme
'wall' => "1", // wall picture
'musictheme' => "mp3player", // music player theme
'movietheme' => "webplayer" // movie player theme
);
// 默认配置
$config['system_file'] = array(
'member'=> USER_SYSTEM.'member.php',
'group' => USER_SYSTEM.'group.php',
'apps' => USER_SYSTEM.'apps.php'
);
//权限路由配置;精确到需要做权限控制的控制器和方法
$config['role_setting'] = array(
'explorer' => array(
'mkdir','mkfile','pathRname','pathDelete','zip','unzip','pathCopy','pathChmod',
'pathCute','pathCuteDrag','pathCopyDrag','clipboard','pathPast','pathInfo',
'serverDownload','fileUpload','search'),
'app' => array('user_app','add','edit','del'),//
'user' => array('changePassword'),//可以设立公用账户
'editor' => array('fileSave'),
'setting' => array('set'),
'fav' => array('add','del','edit'),
'member' => array('get','add','del','edit'),
'group' => array('get','add','del','edit'),
);
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
// 配置项可选值
$config['setting_all'] = array(
'language' => "en:English,zh_CN:简体中文,zh_TW:繁體中文",
'themeall' => "default/:<b>areo blue</b>:default,simple/:<b>simple</b>:simple,metro/:<b>metro</b>:metro,metro/blue_:metro-blue:color,metro/leaf_:metro-green:color,metro/green_:metro-green+:color,metro/grey_:metro-grey:color,metro/purple_:metro-purple:color,metro/pink_:metro-pink:color,metro/orange_:metro-orange:color",
'codethemeall' => "chrome,clouds,crimson_editor,eclipse,github,solarized_light,tomorrow,xcode,ambiance,idle_fingers,monokai,pastel_on_dark,solarized_dark,tomorrow_night_blue,tomorrow_night_eighties",
'wallall' => "1,2,3,4,5,6,7,8,9,10,11,12,13",
'musicthemeall' => "ting,beveled,kuwo,manila,mp3player,qqmusic,somusic,xdj",
'moviethemeall' => "webplayer,qqplayer,vplayer,tvlive,youtube"
);
// 默认配置
$config['setting_default'] = array(
'list_type' => "icon", // list||icon
'list_sort_field' => "name", // name||size||ext||mtime
'list_sort_order' => "up", // asc||desc
'theme' => "simple/", // app theme [default,simple,metro/,metro/black....]
'codetheme' => "clouds", // code editor theme
'wall' => "7", // wall picture
'musictheme' => "mp3player", // music player theme
'movietheme' => "webplayer" // movie player theme
);
//初始系统配置
$config['setting_system_default'] = array(
'system_password' => rand_string(10),
'system_name' => "KodExplorer",
'system_desc' => "——芒果云.资源管理器",
'path_hidden' => ".htaccess,.git,.DS_Store",//目录列表隐藏的项
'auto_login' => "1", // 是否自动登录登录用户为guest
'first_in' => "explorer", // 登录后默认进入[explorer desktop,editor]
'new_user_app' => "365日历,pptv直播,ps,qq音乐,搜狐影视,时钟,天气,水果忍者,计算器,豆瓣电台,音悦台,icloud",
'new_user_folder' => "download,music,image,desktop"
);
//默认菜单配置
$config['setting_menu_default'] = array(
array('name'=>'desktop','type'=>'system','url'=>'index.php?desktop','target'=>'_self','use'=>'1'),
array('name'=>'explorer','type'=>'system','url'=>'index.php?explorer','target'=>'_self','use'=>'1'),
array('name'=>'editor','type'=>'system','url'=>'index.php?editor','target'=>'_self','use'=>'1'),
array('name'=>'adminer','type'=>'','url'=>'./lib/plugins/adminer/','target'=>'_blank','use'=>'1')
);
//权限配置;精确到需要做权限控制的控制器和方法
//需要权限认证的Action;root组无视权限
$config['role_setting'] = array(
'explorer' => array(
'mkdir','mkfile','pathRname','pathDelete','zip','unzip','pathCopy','pathChmod',
'pathCute','pathCuteDrag','pathCopyDrag','clipboard','pathPast','pathInfo',
'serverDownload','fileUpload','search','pathDeleteRecycle',
'fileDownload','zipDownload','fileDownloadRemove','fileProxy','makeFileProxy'),
'app' => array('user_app','init_app','add','edit','del'),//
'user' => array('changePassword'),//可以设立公用账户
'editor' => array('fileSave'),
'userShare' => array('set','del'),
'setting' => array('set','system_setting','php_info'),
'fav' => array('add','del','edit'),
'member' => array('get','add','del','edit'),
'group' => array('get','add','del','edit'),
);

4
config/version.php Normal file → Executable file
View File

@ -1,2 +1,2 @@
<?php
define('KOD_VERSION','2.73');
<?php
define('KOD_VERSION','3.0');

232
controller/app.class.php Normal file → Executable file
View File

@ -1,105 +1,127 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class app extends Controller{
function __construct() {
parent::__construct();
$this->sql=new fileCache($this->config['system_file']['apps']);
}
/**
* 用户首页展示
*/
public function index() {
$this->display(TEMPLATE.'app/index.php');
}
/**
* 用户app 添加、编辑
*/
public function user_app() {
$path = _DIR($this->in['path']);
if (isset($this->in['action']) && $this->in['action'] == 'add'){
$path .= '.oexe';
}
if (!checkExt($path)) {
show_json($this->L['error']);exit;
}
$data = json_decode(rawurldecode($this->in['data']),true);
unset($data['name']);unset($data['desc']);unset($data['group']);
$res = file_put_contents($path, json_encode($data));
show_json($this->L['success']);
}
/**
* 获取列表
*/
public function get() {
$list = array();
if (!isset($this->in['group']) || $this->in['group']=='all') {
$list = $this->sql->get();
}else{
$list = $this->sql->get('group','',$this->in['group']);
}
$list = array_reverse($list);
show_json($list);
}
/**
* 添加
*/
public function add() {
if (!$GLOBALS['is_root']) show_json($this->L['no_permission'],false);
$res=$this->sql->add(rawurldecode($this->in['name']),$this->_init());
if($res) show_json($this->L['success']);
show_json($this->L['error_repeat'],false);
}
/**
* 编辑
*/
public function edit() {
if (!$GLOBALS['is_root']) show_json($this->L['no_permission'],false);
//查找到一条记录,修改为该数组
if($this->sql->replace_update(
rawurldecode($this->in['old_name']),
rawurldecode($this->in['name']),$this->_init())){
show_json($this->L['success']);
}
show_json($this->L['error_repeat'],false);
}
/**
* 删除
*/
public function del() {
if (!$GLOBALS['is_root']) show_json($this->L['no_permission'],false);
if($this->sql->delete(rawurldecode($this->in['name']))){
show_json($this->L['success']);
}
show_json($this->L['error'],false);
}
public function get_url_title(){
$html = curl_get_contents($this->in['url']);
$result = match($html,"<title>(.*)<\/title>");
if (strlen($result)>50) {
$result = mb_substr($result,0,50,'utf-8');
}
if (!$result || strlen($result) == 0) {
$result = $this->in['url'];
$result = str_replace(array('http://','&','/'),array('','@','-'), $result);
}
show_json($result);
}
private function _init(){
return json_decode(rawurldecode($this->in['data']));
}
}
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class app extends Controller{
function __construct() {
parent::__construct();
$this->sql=new fileCache(USER_SYSTEM.'apps.php');
}
/**
* 用户首页展示
*/
public function index() {
$this->display(TEMPLATE.'app/index.php');
}
public function init_app($user_info){
$list = $this->sql->get();
$new_user_app = $this->config['setting_system']['new_user_app'];
$default = explode(',',$new_user_app);
$info = array();
foreach ($default as $key) {
$info[$key] = $list[$key];
}
$desktop = USER_PATH.$user_info['name'].'/home/desktop/';
mk_dir($desktop);
foreach ($info as $key => $data) {
if (!is_array($data)) {
continue;
}
$path = iconv_system($desktop.$key.'.oexe');
unset($data['name']);
unset($data['desc']);
unset($data['group']);
file_put_contents($path, json_encode($data));
}
$user_info['status'] = 1;
$member = new fileCache(USER_SYSTEM.'member.php');
$member->update($user_info['name'],$user_info);
}
/**
* 用户app 添加、编辑
*/
public function user_app() {
$path = _DIR($this->in['path']);
if (isset($this->in['action']) && $this->in['action'] == 'add'){
$path .= '.oexe';
}
if (!checkExt($path)) {
show_json($this->L['error']);exit;
}
$data = json_decode(rawurldecode($this->in['data']),true);
unset($data['name']);unset($data['desc']);unset($data['group']);
$res = file_put_contents($path, json_encode($data));
show_json($this->L['success']);
}
/**
* 获取列表
*/
public function get() {
$list = array();
if (!isset($this->in['group']) || $this->in['group']=='all') {
$list = $this->sql->get();
}else{
$list = $this->sql->get('group','',$this->in['group']);
}
$list = array_reverse($list);
show_json($list);
}
/**
* 添加
*/
public function add() {
$res=$this->sql->add(rawurldecode($this->in['name']),$this->_init());
if($res) show_json($this->L['success']);
show_json($this->L['error_repeat'],false);
}
/**
* 编辑
*/
public function edit() {
//查找到一条记录,修改为该数组
if($this->sql->replace_update(
rawurldecode($this->in['old_name']),
rawurldecode($this->in['name']),$this->_init())){
show_json($this->L['success']);
}
show_json($this->L['error_repeat'],false);
}
/**
* 删除
*/
public function del() {
if($this->sql->delete(rawurldecode($this->in['name']))){
show_json($this->L['success']);
}
show_json($this->L['error'],false);
}
public function get_url_title(){
$html = curl_get_contents($this->in['url']);
$result = match($html,"<title>(.*)<\/title>");
if (strlen($result)>50) {
$result = mb_substr($result,0,50,'utf-8');
}
if (!$result || strlen($result) == 0) {
$result = $this->in['url'];
$result = str_replace(array('http://','&','/'),array('','@','-'), $result);
}
show_json($result);
}
private function _init(){
return json_decode(rawurldecode($this->in['data']));
}
}

View File

@ -1,289 +0,0 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class debug extends Controller{
public $path_app;
public $path_to;
function __construct() {
load_class('pclzip');
$this->path_app = BASIC_PATH;
$this->parent = dirname(BASIC_PATH);
$this->path_to = $this->parent.'/release';
$this->zip_to = $this->parent.'/tag/kodexplorer'.KOD_VERSION.'.zip';
//自动更新覆盖包
$this->update_to= $this->parent.'/release_update';
$this->update_zip_to= $this->parent.'/update/2.0-'.KOD_VERSION.'.zip';
parent::__construct();
}
/**
* 首页
*/
public function index() {
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
debug_out(HOST,WEB_ROOT,BASIC_PATH,APPHOST,$config,$_COOKIE,$_SESSION,$_SERVER);
}
function less(){
header("Content-type: text/html; charset=utf-8");
ob_end_clean();
echo str_pad('',1024);
echo '<h3>开始编译less</h3><hr/>';flush();
$this->_less();
echo '成功!<br/>';flush();
}
function export(){
header("Content-type: text/html; charset=utf-8");
ob_end_clean(); //在循环输出前,要关闭输出缓冲区
echo str_pad('',1024); //浏览器在接受输出一定长度内容之前不会显示缓冲输出
echo '<h1>开始导出!</h1><hr/><h3>删除初始文件</h3><hr/>';flush();
del_dir($this->path_to);
echo '删除完成!<br/><h3>删除成功,开始编译less</h3><hr/>';flush();
//$this->_less();
echo '编译成功!<br/><h3>开始复制文件</h3><hr/>';flush();
$this->_fileInit();
echo '复制成功!<br/><h3>删除开发相关文件</h3><hr/>';flush();
$this->_remove();
echo '删除成功!<br/><h3>开始替换模板种less相关内容</h3><hr/>';flush();
$this->_fileReplace();
echo '替换成功!<br/><h3>初始化默认用户数据...</h3><hr/>';flush();
$this->_initUser();
echo '初始化默认用户成功!<br/><h3>打包程序</h3><hr/>';flush();
ini_set('memory_limit', '2028M');//2G;
$archive = new PclZip($this->zip_to);
$v_list = $archive->create($this->path_to,PCLZIP_OPT_REMOVE_PATH,$this->path_to);
echo '打包成功!<br/><h3>初始化配置文件</h3><hr/>';flush();
$this->make_update();
echo '更新成功!<br/><h1>导出处理完成!^_^</h1>';flush();
}
function make_update(){
del_dir($this->update_to);
mk_dir($this->update_to);
copy_dir($this->path_to.'/', $this->update_to);
$file_list = array(
$this->update_to.'/static/js/lib/jquery-1.8.0.min.js'
);
$path_list = array(
$this->update_to.'/data/User',
$this->update_to.'/data/thumb',
$this->update_to.'/data/system',
$this->update_to.'/data/public',
$this->update_to.'/static/style/font-awesome',
$this->update_to.'/static/images/wall_page',
$this->update_to.'/static/images/thumb',
$this->update_to.'/static/images/wall_page',
$this->update_to.'/static/js/lib/cmp4',
$this->update_to.'/static/js/lib/ztree',
$this->update_to.'/static/js/lib/seajs'
);
foreach($file_list as $val){
del_file($val);
}
echo '<br/>1.更新包;文件删除完成:';flush();
foreach($path_list as $val){
del_dir($val);
}
echo '<br/>2.更新包;文件夹删除完成:';flush();
$archive = new PclZip($this->update_zip_to);
$v_list = $archive->create($this->update_to,PCLZIP_OPT_REMOVE_PATH,$this->update_to);
echo '更新包打包成功!<br/><hr/>';flush();
}
//----------------------------
function _less(){
load_class('lessc.inc');
$path = BASIC_PATH.'static/style/skin/';
$app_theme = array('default','metro','simple');
$app_less = array(
'app_code_edit',
'app_desktop',
'app_editor',
'app_explorer',
'app_setting'
);
$num = count($app_theme)*count($app_less);$i=1;
foreach($app_theme as $theme){
foreach($app_less as $app){
$less = new lessc();
$path_in = $path.$theme.'/'.$app.'.less';
$path_out = $path.$theme.'/'.$app.'.css';
try {
$cache = $less->cachedCompile($path_in);
$out = str_replace(array("{\n",";\n",",\n",' '),
array('{',';',',',' '),$cache["compiled"]);
file_put_contents($path_out,$out);
echo $path_out,' ...成功!('.$i++.'/'.$num.')','<br/>';
unset($less);unset($out);
}catch (exception $e) {
echo "<p style='color:#f66'>fatal error: " . $e->getMessage(),'</p>';
}
flush();
}
}
//编译metro多主题
$color_arr = array(
'blue' => '#5db2ff',
'leaf' => '#03B3B2',
'green' => '#008a17',
'grey' => '#444',
'purple' => '#8D3CC4',
'pink' => '#DC4FAD',
'orange' => '#FF8F32'
);
$config = $path.'metro/config.less';
$file = file_get_contents($config);
preg_match('/\/\*replace_start\*\/(.*)\/\*replace_end/isU',$file,$res);
$default = $res[1];
preg_match('/\/\*replace_start_color\*\/(.*)\/\*replace_end_color/isU',$file,$res2);
$new = $res2[1];
foreach ($color_arr as $name => $color) {
$theme = preg_replace('/@main_color:(.*);/isU',"@main_color:".$color.";",$new);
$file_str = preg_replace('/\/\*replace_start\*\/(.*)\/\*replace_end/isU',
"/*replace_start*/".$theme."/*replace_end",$file);
file_put_contents($config,$file_str);
foreach($app_less as $app){
$less = new lessc();
$path_in = $path.'metro/'.$app.'.less';
$path_out = $path.'metro/'.$name.'_'.$app.'.css';
try {
$cache = $less->cachedCompile($path_in);
$out = str_replace(array("{\n",";\n",",\n",' '),
array('{',';',',',' '),$cache["compiled"]);
file_put_contents($path_out,$out);
echo $path_out,' ...成功!('.$i++.'/'.$num.')','<br/>';
}catch (exception $e) {
echo "<p style='color:#f66'>fatal error: " . $e->getMessage(),'</p>';
}
flush();
}
}
$file_str = preg_replace('/\/\*replace_start\*\/(.*)\/\*replace_end/isU',
"/*replace_start*/".$default."/*replace_end",$file);
file_put_contents($config,$file_str);
}
function _fileInit(){
mk_dir($this->path_to);
echo '<br/>新建文件夹成功,开始复制文件';flush();
copy_dir($this->path_app, $this->path_to);
echo '<br/>复制文件成功,开始清除调试相关信息<hr/>';flush();
echo $this->path_app,'<br/>',$this->path_to;
}
// 删除
function _remove(){
$file_list = array(
$this->path_to.'/data/system/install.lock',
$this->path_to.'/lib/class/lessc.inc.class.php',
$this->path_to.'/static/style/base.less',
$this->path_to.'/static/js/lib/less-1.4.2.min.js',
$this->path_to.'/static/js/lib/webuploader/webuploader.js',
$this->path_to.'/static/style/skin/common.less',
$this->path_to.'/todo.txt',
$this->path_to.'/controller/debug.class.php',
);
$path_list = array(
$this->path_to.'/data/log',
$this->path_to.'/data/User',
$this->path_to.'/data/public/',
$this->path_to.'/data/thumb',
$this->path_to.'/static/js/_dev',
$this->path_to.'/static/js/app/update'
);
foreach($file_list as $val){
del_file($val);
}
echo '<br/>1.文件删除完成:';flush();
mkdir($this->path_to.'/data/User');
foreach($path_list as $val){
del_dir($val);
}
mk_dir($this->path_to.'/data/thumb');
echo '<br/>2.文件夹删除完成:';flush();
$path = $this->path_to.'/static/style/skin/';
$app_theme = array('default','metro','simple');
$app_less = array(
'app_code_edit','app_desktop','app_editor','app_explorer','app_setting',
'button','config','dialog','filelist','right_menu','tree'
);
foreach($app_theme as $theme){
foreach($app_less as $app){
$temp = $path.$theme.'/'.$app.'.less';
del_file($temp);
}
}
echo '<br/>3.less文件删除完成<hr/>';flush();
}
// 删除less相关信息
function _fileReplace(){
$file_list = array(
$this->path_to.'/template/app/index.php',
$this->path_to.'/template/desktop/index.php',
$this->path_to.'/template/editor/edit.php',
$this->path_to.'/template/editor/editor.php',
$this->path_to.'/template/explorer/index.php',
$this->path_to.'/template/setting/index.php'
);
foreach($file_list as $val){
$content = file_get_contents($val);
$content = str_replace("<?php if(STATIC_LESS == 'css'){ ?>",'',$content);
$content = str_replace("<?php echo STATIC_JS;?>",'app',$content);
$content = preg_replace('/<\?php }else{\/\/less_compare_online \?>.*<\?php } \?>/isU','',$content);
file_put_contents($val,$content);
echo '<br/>处理template文件'.$val,'成功';flush();
}
$config = $this->path_to.'/config/config.php';
$content = file_get_contents($config);
$content = str_replace("('STATIC_JS','_dev')","('STATIC_JS','app')",$content);
$content = str_replace("('STATIC_LESS','less')","('STATIC_LESS','css')",$content);
file_put_contents($config,$content);
}
// 默认用户初始化 admin/admin
function _initUser(){
echo '<br/>开始创建用户';flush();
$root = array('home','recycle','data');
$home = array('desktop','doc','download','image','movie','music');
$user = array(
'admin'=>array('admin','root'),
'demo'=>array('demo','default'),
'guest'=>array('guest','guest')
);
mk_dir($this->path_to.'/data/public/test/');//创建公共目录
foreach ($user as $name => $v) {//创建用户目录及初始化
$user_path = $this->path_to.'/data/User/'.$name.'/';
mk_dir($user_path);
foreach ($root as $dir) {
mk_dir($user_path.$dir);
}
foreach ($home as $dir) {
mk_dir($user_path.'home/'.$dir);
}
fileCache::save($user_path.'data/config.php',$this->config['setting_default']);
}
$this->_initUserData();
}
function _initUserData(){
echo '<br/>初始化用户数据';flush();
$role = '<?php exit;?>{"root":{"role":"root","name":"Administrator","path":"","ext_not_allow":""},"default":{"role":"default","name":"default","ext_not_allow":"php|asp|jsp","explorer:mkdir":1,"explorer:mkfile":1,"explorer:pathRname":1,"explorer:pathDelete":1,"explorer:zip":1,"explorer:unzip":1,"explorer:pathCopy":1,"explorer:pathCute":1,"explorer:pathCuteDrag":1,"explorer:clipboard":1,"explorer:pathPast":1,"explorer:pathInfo":1,"explorer:pathInfoMuti":1,"explorer:serverDownload":1,"explorer:fileUpload":1,"explorer:search":1,"app:user_app":1,"editor:fileSave":1},"guest":{"role":"guest","name":"guest","ext_not_allow":"php|asp|jsp"}}';
$user = '<?php exit;?>{"admin":{"name":"admin","password":"21232f297a57a5a743894a0e4a801fc3","role":"root","status":0},"guest":{"name":"guest","password":"084e0343a0486ff05530df6c705c8bb4","role":"guest","status":0},"demo":{"name":"demo","password":"fe01ce2a7fbac8fafaed7c982a04e229","role":"default","status":0}}';
file_put_contents($this->path_to.'/data/system/group.php',$role);
file_put_contents($this->path_to.'/data/system/member.php',$user);
}
}

57
controller/desktop.class.php Normal file → Executable file
View File

@ -1,31 +1,26 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class desktop extends Controller{
function __construct() {
parent::__construct();
$this->tpl = TEMPLATE.'desktop/';
}
public function index() {
$wall = $this->config['user']['wall'];
if(strlen($wall)>3){
$this->assign('wall',$wall);
}else{
$this->assign('wall',STATIC_PATH.'images/wall_page/'.$wall.'.jpg');
}
if (!is_dir(MYHOME.'desktop/') && is_writable(MYHOME)) {
mkdir(MYHOME.'desktop/');
}
$upload_max = get_post_max();
$this->assign('upload_max',$upload_max);
$this->display('index.php');
}
}
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class desktop extends Controller{
function __construct() {
parent::__construct();
$this->tpl = TEMPLATE.'desktop/';
}
public function index() {
$wall = $this->config['user']['wall'];
if(strlen($wall)>3){
$this->assign('wall',$wall);
}else{
$this->assign('wall',STATIC_PATH.'images/wall_page/'.$wall.'.jpg');
}
if (!is_dir(MYHOME.'desktop/') && is_writable(MYHOME)) {
mkdir(MYHOME.'desktop/');
}
$this->display('index.php');
}
}

234
controller/editor.class.php Normal file → Executable file
View File

@ -1,113 +1,123 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class editor extends Controller{
function __construct() {
parent::__construct();
$this->tpl = TEMPLATE . 'editor/';
}
// 多文件编辑器
public function index(){
$this->display('editor.php');
}
// 单文件编辑
public function edit(){
$this->assign('editor_config',$this->getConfig());//获取编辑器配置信息
$this->display('edit.php');
}
// 获取文件数据
public function fileGet(){
$filename=_DIR($this->in['filename']);
if (!is_readable($filename)) show_json($this->L['no_permission'],false);
if (filesize($filename) >= 1024*1024*20) show_json($this->L['edit_too_big'],false);
$filecontents=file_get_contents($filename);//文件内容
$charset=$this->_get_charset($filecontents);
if ($charset!='' || $charset!='utf-8') {
$filecontents=mb_convert_encoding($filecontents,'utf-8',$charset);
}
$data = array(
'ext' => get_path_ext($filename),
'name' => iconv_app(get_path_this($filename)),
'filename' => rawurldecode($this->in['filename']),
'charset' => $charset,
'content' => $filecontents
);
show_json($data);
}
public function fileSave(){
$filestr = rawurldecode($this->in['filestr']);
$charset = $this->in['charset'];
$path =_DIR($this->in['path']);
if (!is_writable($path)) show_json($this->L['no_permission_write'],false);
if ($charset !='' || $charset != 'utf-8') {
$filestr=mb_convert_encoding($filestr,$this->in['charset'],'utf-8');
}
$fp=fopen($path,'wb');
fwrite($fp,$filestr);
fclose($fp);
show_json($this->L['save_success']);
}
/*
* 获取编辑器配置信息
*/
public function getConfig(){
$default = array(
'font_size' => '14px',
'theme' => 'github',
'auto_wrap' => 0,
'display_char' => 0,
'auto_complete' => 1
);
$config_file = USER.'data/editor_config.php';
if (!file_exists($config_file)) {//不存在则创建
$sql=new fileCache($config_file);
$sql->reset($default);
}else{
$sql=new fileCache($config_file);
$default = $sql->get();
}
return json_encode($default);
}
/*
* 获取编辑器配置信息
*/
public function setConfig(){
$key = $this->in['k'];$value = $this->in['v'];
if ($key !='' && $value != '') {
$config_file = USER.'data/editor_config.php';
$sql=new fileCache($config_file);
$default = $sql->update($key,$value);
show_json($this->L["setting_success"]);
}else{
show_json($this->L['error'],false);
}
}
//-----------------------------------------------
/*
* 获取字符串编码
* @param:$ext 传入字符串
*/
private function _get_charset(&$str) {
if ($str == '') return 'utf-8';
//前面检测成功则,自动忽略后面
$charset=strtolower(mb_detect_encoding($str,$this->config['check_charset']));
if (substr($str,0,3)==chr(0xEF).chr(0xBB).chr(0xBF)){
$charset='utf-8';
}else if($charset=='cp936'){
$charset='gbk';
}
if ($charset == 'ascii') $charset = 'utf-8';
return strtolower($charset);
}
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class editor extends Controller{
function __construct() {
parent::__construct();
$this->tpl = TEMPLATE . 'editor/';
}
// 多文件编辑器
public function index(){
$this->display('editor.php');
}
// 单文件编辑
public function edit(){
$this->assign('editor_config',$this->getConfig());//获取编辑器配置信息
$this->display('edit.php');
}
// 获取文件数据
public function fileGet(){
$filename=_DIR($this->in['filename']);
if (!is_readable($filename)) show_json($this->L['no_permission_read'],false);
if (filesize($filename) >= 1024*1024*20) show_json($this->L['edit_too_big'],false);
$filecontents=file_get_contents($filename);//文件内容
$charset=$this->_get_charset($filecontents);
if ($charset!='' || $charset!='utf-8') {
$filecontents=mb_convert_encoding($filecontents,'utf-8',$charset);
}
$data = array(
'ext' => get_path_ext($filename),
'name' => iconv_app(get_path_this($filename)),
'filename' => rawurldecode($this->in['filename']),
'charset' => $charset,
'content' => $filecontents
);
show_json($data);
}
public function fileSave(){
$filestr = rawurldecode($this->in['filestr']);
$charset = $this->in['charset'];
$path =_DIR($this->in['path']);
if (!is_writable($path)) show_json($this->L['no_permission_write'],false);
if ($charset !='' || $charset != 'utf-8') {
$filestr=mb_convert_encoding($filestr,$this->in['charset'],'utf-8');
}
$fp=fopen($path,'wb');
fwrite($fp,$filestr);
fclose($fp);
show_json($this->L['save_success']);
}
/*
* 获取编辑器配置信息
*/
public function getConfig(){
$default = array(
'font_size' => '14px',
'theme' => 'clouds',
'auto_wrap' => 0,
'display_char' => 0,
'auto_complete' => 1,
'function_list' => 1
);
$config_file = USER.'data/editor_config.php';
if (!file_exists($config_file)) {//不存在则创建
$sql=new fileCache($config_file);
$sql->reset($default);
}else{
$sql=new fileCache($config_file);
$default = $sql->get();
}
if (!isset($default['function_list'])) {
$default['function_list'] = 1;
}
return json_encode($default);
}
/*
* 获取编辑器配置信息
*/
public function setConfig(){
$file = USER.'data/editor_config.php';
if (!is_writeable($file)) {//配置不可写
show_json($this->L['no_permission_write'],false);
}
$key= $this->in['k'];
$value = $this->in['v'];
if ($key !='' && $value != '') {
$sql=new fileCache($file);
if(!$sql->update($key,$value)){
$sql->add($key,$value);//没有则添加一条
}
show_json($this->L["setting_success"]);
}else{
show_json($this->L['error'],false);
}
}
//-----------------------------------------------
/*
* 获取字符串编码
* @param:$ext 传入字符串
*/
private function _get_charset(&$str) {
if ($str == '') return 'utf-8';
//前面检测成功则,自动忽略后面
$charset=strtolower(mb_detect_encoding($str,$this->config['check_charset']));
if (substr($str,0,3)==chr(0xEF).chr(0xBB).chr(0xBF)){
$charset='utf-8';
}else if($charset=='cp936'){
$charset='gbk';
}
if ($charset == 'ascii') $charset = 'utf-8';
return strtolower($charset);
}
}

1313
controller/explorer.class.php Normal file → Executable file

File diff suppressed because it is too large Load Diff

124
controller/fav.class.php Normal file → Executable file
View File

@ -1,62 +1,62 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class fav extends Controller{
private $sql;
function __construct(){
parent::__construct();
$this->sql=new fileCache($this->config['user_fav_file']);
}
/**
* 获取收藏夹json
*/
public function get() {
show_json($this->sql->get());
}
/**
* 添加
*/
public function add() {
$res=$this->sql->add($this->in['name'],
array(
'name'=>$this->in['name'],
'path'=>$this->in['path']
)
);
if($res)show_json($this->L['success']);
show_json($this->L['error_repeat'],false);
}
/**
* 编辑
*/
public function edit() {
//查找到一条记录,修改为该数组
$to_array=array(
'name'=>$this->in['name_to'],
'path'=>$this->in['path_to']
);
if($this->sql->replace_update(
$this->in['name'],$this->in['name_to'],$to_array)){
show_json($this->L['success']);
}
show_json($this->L['error_repeat'],false);
}
/**
* 删除
*/
public function del() {
if($this->sql->delete($this->in['name'])){
show_json($this->L['success']);
}
show_json($this->L['error'],false);
}
}
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class fav extends Controller{
private $sql;
function __construct(){
parent::__construct();
$this->sql=new fileCache($this->config['user_fav_file']);
}
/**
* 获取收藏夹json
*/
public function get() {
show_json($this->sql->get());
}
/**
* 添加
*/
public function add() {
$res=$this->sql->add($this->in['name'],
array(
'name'=>$this->in['name'],
'path'=>$this->in['path']
)
);
if($res)show_json($this->L['success']);
show_json($this->L['error_repeat'],false);
}
/**
* 编辑
*/
public function edit() {
//查找到一条记录,修改为该数组
$to_array=array(
'name'=>$this->in['name_to'],
'path'=>$this->in['path_to']
);
if($this->sql->replace_update(
$this->in['name'],$this->in['name_to'],$to_array)){
show_json($this->L['success']);
}
show_json($this->L['error_repeat'],false);
}
/**
* 删除
*/
public function del() {
if($this->sql->delete($this->in['name'])){
show_json($this->L['success']);
}
show_json($this->L['error'],false);
}
}

174
controller/group.class.php Normal file → Executable file
View File

@ -1,88 +1,88 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class group extends Controller{
private $sql;
function __construct() {
parent::__construct();
$this->sql=new fileCache($this->config['system_file']['group']);
}
public function get() {
show_json($this->sql->get());
}
/**
* 用户添加
*/
public function add(){
$group = $this->_init_data();
if($this->sql->add($this->in['role'],$group)){
show_json($this->L['success']);
}
show_json($this->L['error_repeat'],false);
}
/**
* 编辑
*/
public function edit(){
$group = $this->_init_data();
$role_old = $this->in['role_old'];
if (!$role_old) show_json($this->L["groupname_can_not_null"],false);
if ($role_old == 'root') show_json($this->L['default_group_can_not_do'],false);
if ($this->sql->replace_update($role_old,$this->in['role'],$group)){
$member = new fileCache($this->config['system_file']['member']);
if ($member -> update('role',$this->in['role'],$role_old)) {
show_json($this->L['success']);
}
show_json($this->L['group_move_user_error'],false);
}
show_json($this->L['error_repeat'],false);
}
/**
* 删除
*/
public function del() {
$role = $this->in['role'];
if (!$role) show_json($this->L["groupname_can_not_null"],false);
if ($role == 'root') show_json($this->L['default_group_can_not_do'],false);
if($this->sql->delete($role)){
$member = new fileCache($this->config['system_file']['member']);
$member -> update('role','',$role);//改组用户设置为空
show_json($this->L['success']);
}
show_json($this->L['error'],false);
}
//===========内部调用============
/**
* 初始化数据 get
* 只传键即可 &ext_not_allow=''&explorer-mkfile&explorer-pathRname
*/
private function _init_data(){
if (strlen($this->in['role'])<1) show_json($this->L["groupname_can_not_null"],false);
if (strlen($this->in['name'])<1) show_json($this->L["groupdesc_can_not_null"],false);
$role_arr = array('role'=>$this->in['role'],'name'=>$this->in['name']);
$role_arr['ext_not_allow'] = $this->in['ext_not_allow'];
foreach ($this->config['role_setting'] as $key => $actions) {
foreach ($actions as $action) {
$k = $key.':'.$action;
if (isset($this->in[$k])) {
$role_arr[$k] = 1;
}else{
//$role_arr[$k] = 0;
}
}
}
return $role_arr;
}
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class group extends Controller{
private $sql;
function __construct() {
parent::__construct();
$this->sql=new fileCache(USER_SYSTEM.'group.php');
}
public function get() {
show_json($this->sql->get());
}
/**
* 用户添加
*/
public function add(){
$group = $this->_init_data();
if($this->sql->add($this->in['role'],$group)){
show_json($this->L['success']);
}
show_json($this->L['error_repeat'],false);
}
/**
* 编辑
*/
public function edit(){
$group = $this->_init_data();
$role_old = $this->in['role_old'];
if (!$role_old) show_json($this->L["groupname_can_not_null"],false);
if ($role_old == 'root') show_json($this->L['default_group_can_not_do'],false);
if ($this->sql->replace_update($role_old,$this->in['role'],$group)){
$member = new fileCache(USER_SYSTEM.'member.php');
if ($member -> update('role',$this->in['role'],$role_old)) {
show_json($this->L['success']);
}
show_json($this->L['group_move_user_error'],false);
}
show_json($this->L['error_repeat'],false);
}
/**
* 删除
*/
public function del() {
$role = $this->in['role'];
if (!$role) show_json($this->L["groupname_can_not_null"],false);
if ($role == 'root') show_json($this->L['default_group_can_not_do'],false);
if($this->sql->delete($role)){
$member = new fileCache(USER_SYSTEM.'member.php');
$member -> update('role','',$role);//改组用户设置为空
show_json($this->L['success']);
}
show_json($this->L['error'],false);
}
//===========内部调用============
/**
* 初始化数据 get
* 只传键即可 &ext_not_allow=''&explorer-mkfile&explorer-pathRname
*/
private function _init_data(){
if (strlen($this->in['role'])<1) show_json($this->L["groupname_can_not_null"],false);
if (strlen($this->in['name'])<1) show_json($this->L["groupdesc_can_not_null"],false);
$role_arr = array('role'=>$this->in['role'],'name'=>$this->in['name']);
$role_arr['ext_not_allow'] = $this->in['ext_not_allow'];
foreach ($this->config['role_setting'] as $key => $actions) {
foreach ($actions as $action) {
$k = $key.':'.$action;
if (isset($this->in[$k])){
$role_arr[$k] = 1;
}else{
$role_arr[$k] = 0;
}
}
}
return $role_arr;
}
}

View File

204
controller/member.class.php Normal file → Executable file
View File

@ -1,99 +1,107 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class member extends Controller{
private $sql;
function __construct() {
parent::__construct();
$this->tpl = TEMPLATE.'member/';
$this->sql=new fileCache(USER_SYSTEM.'member.php');
}
/**
* 获取用户列表数据
*/
public function get() {
show_json($this->sql->get());
}
/**
* 用户添加
*/
public function add(){
if (!$this->in['name'] ||
!$this->in['password'] ||
!$this->in['role'] ) show_json($this->L["data_not_full"],false);
$user = array(
'name' => $this->in['name'],
'password' => md5($this->in['password']),
'role' => $this->in['role'],
'status' => 0,
);
if ($this->sql->add($this->in['name'],$user)) {
$this->_initUser($this->in['name']);
show_json($this->L['success']);
}
show_json($this->L['error_repeat'],false);
}
/**
* 编辑
*/
public function edit() {
if (!$this->in['name'] ||
!$this->in['name_to'] ||
!$this->in['role_to'] ) show_json($this->L["data_not_full"],false);
if ($this->in['name'] == 'admin') show_json($this->L['default_user_can_not_do'],false);
//查找到一条记录,修改为该数组
$user = $this->sql->get($this->in['name']);
$user['name'] = $this->in['name_to'];
$user['role'] = $this->in['role_to'];
if (strlen($this->in['password_to'])>=1) {
$user['password'] = md5($this->in['password_to']);
}
if($this->sql->replace_update($this->in['name'],$user['name'],$user)){
rename(USER_PATH.$this->in['name'],USER_PATH.$this->in['name_to']);
show_json($this->L['success']);
}
show_json($this->L['error_repeat'],false);
}
/**
* 删除
*/
public function del() {
$name = $this->in['name'];
if (!$name) show_json($this->L["username_can_not_null"],false);
if ($name == 'admin') show_json($this->L['default_user_can_not_do'],false);
if($this->sql->delete($name)){
del_dir(USER_PATH.$name.'/');
show_json($this->L['success']);
}
show_json($this->L['error'],false);
}
//============内部处理函数=============
/**
*初始化用户数据和配置。
*/
public function _initUser($name){
$root = array('home','recycle','data');
$home = array('desktop','doc','download','image','movie','music');
$user_path = USER_PATH.$name.'/';
mk_dir($user_path);
foreach ($root as $dir) {
mk_dir($user_path.$dir);
}
foreach ($home as $dir) {
mk_dir($user_path.'home/'.$dir);
}
fileCache::save($user_path.'data/config.php',$this->config['setting_default']);
}
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class member extends Controller{
private $sql;
function __construct() {
parent::__construct();
$this->tpl = TEMPLATE.'member/';
$this->sql=new fileCache(USER_SYSTEM.'member.php');
}
/**
* 获取用户列表数据
*/
public function get() {
show_json($this->sql->get());
}
/**
* 用户添加
*/
public function add(){
if (!$this->in['name'] ||
!$this->in['password'] ||
!$this->in['role'] ) show_json($this->L["data_not_full"],false);
$this->in['name'] = rawurldecode($this->in['name']);
$this->in['password'] = rawurldecode($this->in['password']);
$user = array(
'name' => rawurldecode($this->in['name']),
'password' => md5(rawurldecode($this->in['password'])),
'role' => $this->in['role'],
'status' => 0,
);
if ($this->sql->add($this->in['name'],$user)) {
$this->_initUser($this->in['name']);
show_json($this->L['success']);
}
show_json($this->L['error_repeat'],false);
}
/**
* 编辑
*/
public function edit() {
if (!$this->in['name'] ||
!$this->in['name_to'] ||
!$this->in['role_to'] ) show_json($this->L["data_not_full"],false);
$this->in['name'] = rawurldecode($this->in['name']);
$this->in['name_to'] = rawurldecode($this->in['name_to']);
$this->in['password_to'] = rawurldecode($this->in['password_to']);
if ($this->in['name'] == 'admin') show_json($this->L['default_user_can_not_do'],false);
//查找到一条记录,修改为该数组
$user = $this->sql->get($this->in['name']);
$user['name'] = $this->in['name_to'];
$user['role'] = $this->in['role_to'];
if (strlen($this->in['password_to'])>=1) {
$user['password'] = md5($this->in['password_to']);
}
if($this->sql->replace_update($this->in['name'],$user['name'],$user)){
rename(USER_PATH.$this->in['name'],USER_PATH.$this->in['name_to']);
show_json($this->L['success']);
}
show_json($this->L['error_repeat'],false);
}
/**
* 删除
*/
public function del() {
$name = $this->in['name'];
if (!$name) show_json($this->L["username_can_not_null"],false);
if ($name == 'admin') show_json($this->L['default_user_can_not_do'],false);
if($this->sql->delete($name)){
del_dir(USER_PATH.$name.'/');
show_json($this->L['success']);
}
show_json($this->L['error'],false);
}
//============内部处理函数=============
/**
*初始化用户数据和配置。
*/
public function _initUser($name){
$root = array('home','recycle','data');
$new_user_folder = $this->config['setting_system']['new_user_folder'];
$home = explode(',',$new_user_folder);
$user_path = USER_PATH.$name.'/';
mk_dir($user_path);
foreach ($root as $dir) {
mk_dir($user_path.$dir);
}
foreach ($home as $dir) {
mk_dir($user_path.'home/'.$dir);
}
fileCache::save($user_path.'data/config.php',$this->config['setting_default']);
}
}

137
controller/setting.class.php Normal file → Executable file
View File

@ -1,53 +1,84 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class setting extends Controller{
private $sql;
function __construct() {
parent::__construct();
}
/**
* 用户首页展示
*/
public function index() {
$this->tpl = TEMPLATE.'setting/';
$this->display('index.php');
}
/**
* 用户首页展示
*/
public function slider() {
$this->tpl = TEMPLATE . 'setting/slider/';
$this->display($this->in['slider'].'.php');
}
/**
* 参数设置
* 可以同时修改多个key=a,b,c&value=1,2,3
*/
public function set(){
$key = $this->in['k'];
$value = $this->in['v'];
if ($key !='' && $value != '') {
$conf = $this->config['user'];
$arr_k = explode(',', $key);
$arr_v = explode(',',$value);
$num = count($arr_k);
for ($i=0; $i < $num; $i++) {
$conf[$arr_k[$i]] = $arr_v[$i];
}
fileCache::save($this->config['user_seting_file'],$conf);
show_json($this->L["setting_success"]);
}else{
show_json($this->L['error'],false);
}
}
}
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class setting extends Controller{
private $sql;
function __construct(){
parent::__construct();
}
/**
* 用户首页展示
*/
public function index() {
$this->tpl = TEMPLATE.'setting/';
$this->display('index.php');
}
/**
* 用户首页展示
*/
public function slider() {
$this->tpl = TEMPLATE . 'setting/slider/';
$this->display($this->in['slider'].'.php');
}
public function php_info(){
phpinfo();
}
public function get_setting(){
$setting = $GLOBALS['config']['setting_system']['menu'];
show_json($setting);
}
//管理员 系统设置全局数据
public function system_setting(){
$setting_file = USER_SYSTEM.'system_setting.php';
$data = json_decode($this->in['data'],true);
if (!$data) {
show_json($this->L['error'],false);
}
$setting = $GLOBALS['config']['setting_system'];
foreach ($data as $key => $value){
$setting[$key] = $value;
}
//$setting['menu'] = $GLOBALS['config']['setting_menu_default'];
//为了保存更多的数据;不直接覆盖文件 $data->setting_file;
fileCache::save($setting_file,$setting);
show_json($this->L['success']);
//show_json($setting);
}
/**
* 参数设置
* 可以同时修改多个key=a,b,c&value=1,2,3
*/
public function set(){
$file = $this->config['user_seting_file'];
if (!is_writeable($file)) {//配置不可写
show_json($this->L['no_permission_write'],false);
}
$key = $this->in['k'];
$value = $this->in['v'];
if ($key !='' && $value != '') {
$conf = $this->config['user'];
$arr_k = explode(',', $key);
$arr_v = explode(',',$value);
$num = count($arr_k);
for ($i=0; $i < $num; $i++) {
$conf[$arr_k[$i]] = $arr_v[$i];
}
fileCache::save($file,$conf);
show_json($this->L["setting_success"]);
}else{
show_json($this->L['error'],false);
}
}
}

459
controller/share.class.php Executable file
View File

@ -0,0 +1,459 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class share extends Controller{
private $sql;
private $share_info;
private $share_path;
private $path;
function __construct(){
parent::__construct();
$this->tpl = TEMPLATE.'share/';
//不需要检查的action
$arr_not_check = array('common_js');
if (!in_array(ACT,$arr_not_check)){
$this->_check_share();
$this->_init_info();
$this->assign('can_download',$this->share_info['not_download']=='1'?0:1);
}
//需要检查下载权限的Action
$arr_check_download = array('fileDownload','zipDownload');//'fileProxy','fileGet'
if (in_array(ACT,$arr_check_download)){
if ($this->share_info['not_download']=='1') {
show_json($this->L['share_not_download_tips'],false);
}
}
// //禁止下载后;也会无法预览 'fileProxy','fileGet'
// if (ACT == 'file' && $this->share_info['not_download']=='1') {
// $this->error($this->L['share_not_download_tips']);
// }
}
//======//
private function _check_share(){
if (!isset($this->in['user']) || !isset($this->in['sid'])) {
$this->error($this->L['share_error_param']);
}
//储存该共享基础信息
$share_data = USER_PATH.$this->in['user'].'/data/share.php';
if (!file_exists($share_data)) {
$this->error($this->L['share_error_user']);
}
$this->sql=new fileCache($share_data);
$list = $this->sql->get();
if (!isset($list[$this->in['sid']])){
$this->error($this->L['share_error_sid']);
}
$this->share_info = $list[$this->in['sid']];
$share_info = $this->share_info;
//检查是否过期
if ($share_info['time'].length!=0) {
$date = date_create_from_format('y/m/d',$share_info['time_to']);
if (time() > $date) {
$this->error($this->L['share_error_time']);
}
}
//密码检测
if ($share_info['share_password']=='') return;
//if ($_SESSION['kod_user']['name']==$this->in['user']) return;
//提交密码
if (!isset($this->in['password'])){
//输入密码
if ($_SESSION['password_'.$this->in['sid']]==$share_info['share_password']) return;
$this->error('password');
}else{
if ($this->in['password'] == $share_info['share_password']) {
session_start();
$_SESSION['password_'.$this->in['sid']]=$share_info['share_password'];
show_json('success');
}else{
show_json($this->L['share_error_password'],false);
}
}
}
private function _init_info(){
//获取用户组根据是否为root 定义前缀
$member = new fileCache(USER_SYSTEM.'member.php');
$user = $member->get($this->in['user']);
if (!is_array($user) || !isset($user['password'])) {
$this->error($this->L['share_error_user']);
}
define('USER',USER_PATH.$user['name'].'/');
define('USER_TEMP',USER.'data/share_temp/');
$share_path = _DIR_CLEAR($this->share_info['path']);
if (substr($share_path,0,strlen('*public*/')) == '*public*/') {
$share_path = PUBLIC_PATH.str_replace('*public*/','',$share_path);
}else{
if ($user['role'] != 'root') {
$share_path = USER.'home/'.$share_path;
}else{
$share_path = _DIR_CLEAR($this->share_info['path']);
}
}
if ($this->share_info['type'] != 'file'){
$share_path=rtrim($share_path,'/').'/';
define('HOME',$share_path);//dir_out时当作前缀剔除;系统
}
$share_path = iconv_system($share_path);
if (!file_exists($share_path)) {
$this->error($this->L['share_error_path']);
}
$this->share_path = $share_path;
$this->path = $share_path.$this->_clear($this->in['path']);
}
private function _clear($path){
return iconv_system(_DIR_CLEAR(rawurldecode($path)));
}
private function error($msg){
$this->assign('msg',$msg);
$this->display('tips.php');
exit;
}
//==========================
/*
* 文件浏览
*/
public function file() {
$this->share_view_add();
if ($this->share_info['type']!='file') {
$this->share_info['name'] = get_path_this($this->path);
}
$size = filesize($this->path);
$this->share_info['size'] = size_format($size);
$this->_assign_info();
$this->display('file.php');
}
/*
* 文件夹浏览
*/
public function folder() {
$this->share_view_add();
if(isset($this->in['path']) && $this->in['path'] !=''){
$dir = '/'._DIR_CLEAR($this->in['path']);
}else{
$dir = '/';//首次进入系统,不带参数
}
$dir = '/'.trim($dir,'/').'/';
$this->_assign_info();
$this->assign('dir',$dir);
$this->display('explorer.php');
}
/*
* 代码阅读
*/
public function code_read() {
$this->share_view_add();
$this->_assign_info();
$this->display('editor.php');
}
//==========================
//页面统一注入变量
private function _assign_info(){
$config = new fileCache(USER.'data/config.php');
$config = $config->get();
if (count($config)<1) {
$config = $GLOBALS['config']['setting_default'];
}
$this->assign('config_theme',$config['theme']);
$this->assign('config_list_type',$config['list_type']);
$this->assign('config_sort_field',$config['sort_field']);
$this->assign('config_sort_order',$config['sort_order']);
$this->assign('config_musictheme',$config['musictheme']);
$this->assign('config_movietheme',$config['movietheme']);
$this->share_info['share_password'] = '';
$this->share_info['num_view'] = intval($this->share_info['num_view']);
$this->share_info['num_download'] = intval($this->share_info['num_download']);
$this->share_info['path'] = get_path_this(iconv_app($this->path));
$this->assign('share_info',$this->share_info);
}
//下载次数统计
private function share_download_add(){
$num = abs(intval($this->share_info['num_download'])) +1;
$this->share_info['num_download'] = $num;
$this->sql->update($this->in['sid'],$this->share_info);
}
//浏览次数统计
private function share_view_add(){
$num = abs(intval($this->share_info['num_view'])) +1;
$this->share_info['num_view'] = $num;
$this->sql->update($this->in['sid'],$this->share_info);
}
public function common_js(){
$basic_path = BASIC_PATH;
if ($GLOBALS['is_root']) {
$basic_path = '/';//对非root用户隐藏所有地址
}
$the_config = array(
'lang' => $GLOBALS['language'],
'is_root' => 0,
'web_root' => '/',
'web_host' => HOST,
'static_path' => STATIC_PATH,
'basic_path' => BASIC_PATH,
'version' => KOD_VERSION,
'app_host' => APPHOST,
'office_server' => OFFICE_SERVER,
'json_data' => "",
'share_page' => 'share'
);
$js = 'LNG='.json_encode($GLOBALS['L']).';';
$js .= 'AUTH=[];';
$js .= 'G='.json_encode($the_config).';';
header("Content-Type:application/javascript");
echo $js;
}
//========ajax function============
public function pathInfo(){
$info_list = json_decode($this->in['list'],true);
foreach ($info_list as &$val) {
$val['path'] = $this->share_path.$this->_clear($val['path']);
}
$data = path_info_muti($info_list,$this->L['time_type_info']);
_DIR_OUT($data['path']);
show_json($data);
}
public function fileSave(){
show_json($this->L['no_permission'],false);
}
// 单文件编辑
public function edit(){
$default = array(
'font_size' => '14px',
'theme' => 'clouds',
'auto_wrap' => 0,
'display_char' => 0,
'auto_complete' => 1,
'function_list' => 1
);
$this->_assign_info();
$this->assign('editor_config',$default);//获取编辑器配置信息
$this->display('edit.php');
}
public function pathList(){
$list=$this->path($this->path);
show_json($list);
}
public function treeList(){
$path=$this->path;
if (isset($this->in['project'])) {
$path = $this->share_path.$this->_clear($this->in['project']);
}
if (isset($this->in['name'])){
$path=$path.'/'.$this->_clear($this->in['name']);
}
$list_file = ($this->in['app'] == 'editor'?true:false);//编辑器内列出文件
$list=$this->path($path,$list_file,true);
function sort_by_key($a, $b){
if ($a['name'] == $b['name']) return 0;
return ($a['name'] > $b['name']) ? 1 : -1;
}
usort($list['folderlist'], "sort_by_key");
usort($list['filelist'], "sort_by_key");
$result = array_merge($list['folderlist'],$list['filelist']);
if ($this->in['app'] != 'editor') {
$result =$list['folderlist'];
}
if ($this->in['type']=='init') {
$result = array(
array(
'name'=>iconv_app(get_path_this($path)),
'children'=>$result,
'menuType'=>"menuTreeRoot",
'open'=>true,
'this_path'=> '/',
'isParent'=>count($result)>0?true:false
)
);
}
show_json($result);
}
public function search(){
if (!isset($this->in['search'])) show_json($this->L['please_inpute_search_words'],false);
$is_content = false;
$is_case = false;
$ext = '';
if (isset($this->in['is_content'])) $is_content = true;
if (isset($this->in['is_case'])) $is_case = true;
if (isset($this->in['ext'])) $ext= str_replace(' ','',$this->in['ext']);
$list = path_search(
$this->path,
iconv_system($this->in['search']),
$is_content,$ext,$is_case);
_DIR_OUT($list);
show_json($list);
}
//代理输出
public function fileProxy(){
file_put_out($this->path);
}
public function fileDownload(){
$this->share_download_add();
file_put_out($this->path,true);
}
//文件下载后删除,用于文件夹下载
public function fileDownloadRemove(){
if ($this->share_info['not_download']=='1') {
show_json($this->L['share_not_download_tips'],false);
}
$path = rawurldecode(_DIR_CLEAR($this->in['path']));
$path = USER_TEMP.iconv_system($path);
file_put_out($path,true);
del_file($path);
}
public function zipDownload(){
$this->share_download_add();
if(!file_exists(USER_TEMP)){
mkdir(USER_TEMP);
}else{//清除未删除的临时文件,一天前
$list = path_list(USER_TEMP,true,false);
$max_time = 3600*24;
if ($list['filelist']>=1) {
for ($i=0; $i < count($list['filelist']); $i++) {
$create_time = $list['filelist'][$i]['mtime'];//最后修改时间
if(time() - $create_time >$max_time){
del_file($list['filelist'][$i]['path'].$list['filelist'][$i]['name']);
}
}
}
}
$zip_file = $this->zip(USER_TEMP);
show_json($this->L['zip_success'],true,get_path_this($zip_file));
}
private function zip($zip_path){
if (!isset($zip_path)) {
show_json($this->L['share_not_download_tips'],false);
}
load_class('pclzip');
ini_set('memory_limit', '2028M');//2G;
$zip_list = json_decode($this->in['list'],true);
$list_num = count($zip_list);
for ($i=0; $i<$list_num; $i++) {
$zip_list[$i]['path'] = _DIR_CLEAR($this->path.$this->_clear($zip_list[$i]['path']));
}
//指定目录
if ($list_num == 1) {
$path_this_name=get_path_this($zip_list[0]['path']);
}else{
$path_this_name=get_path_this(get_path_father($zip_list[0]['path']));
}
$zipname = $zip_path.$path_this_name.'.zip';
$zipname = get_filename_auto($zipname,date(' h.i.s'));
$files = array();
for ($i=0; $i < $list_num; $i++) {
$files[] = $zip_list[$i]['path'];
}
$remove_path_pre = get_path_father($zip_list[0]['path']);
$archive = new PclZip($zipname);
$v_list = $archive->create(implode(',',$files),PCLZIP_OPT_REMOVE_PATH,$remove_path_pre);
return iconv_app($zipname);
}
// 获取文件数据
public function fileGet(){
$name = $this->_clear($this->in['filename']);
$filename= $this->share_path.$name;
if (filesize($filename) >= 1024*1024*20) show_json($this->L['edit_too_big'],false);
$filecontents=file_get_contents($filename);//文件内容
$charset=$this->_get_charset($filecontents);
if ($charset!='' || $charset!='utf-8') {
$filecontents=mb_convert_encoding($filecontents,'utf-8',$charset);
}
$data = array(
'ext' => get_path_ext($name),
'name' => iconv_app($name),
'filename' => $name,
'charset' => $charset,
'content' => $filecontents
);
show_json($data);
}
private function _get_charset(&$str) {
if ($str == '') return 'utf-8';
//前面检测成功则,自动忽略后面
$charset=strtolower(mb_detect_encoding($str,$this->config['check_charset']));
if (substr($str,0,3)==chr(0xEF).chr(0xBB).chr(0xBF)){
$charset='utf-8';
}else if($charset=='cp936'){
$charset='gbk';
}
if ($charset == 'ascii') $charset = 'utf-8';
return strtolower($charset);
}
public function image(){
if (filesize($this->path) <= 1024*10) {//小于10k 不再生成缩略图
file_put_out($this->path);
}
load_class('imageThumb');
$image= $this->path;
$image_thum = DATA_THUMB.md5($image).'.png';
if (!is_dir(DATA_THUMB)){
mkdir(DATA_THUMB,"0777");
}
if (!file_exists($image_thum)){//如果拼装成的url不存在则没有生成过
if ($_SESSION['this_path']==DATA_THUMB){//当前目录则不生成缩略图
$image_thum=$this->path;
}else {
$cm=new CreatMiniature();
$cm->SetVar($image,'file');
//$cm->Prorate($image_thum,72,64);//生成等比例缩略图
$cm->BackFill($image_thum,72,64,true);//等比例缩略图,空白处填填充透明色
}
}
if (!file_exists($image_thum) || filesize($image_thum)<100){//缩略图生成失败则用默认图标
$image_thum=STATIC_PATH.'images/image.png';
}
file_put_out($image_thum);
}
//获取文件列表&哦exe文件json解析
private function path($dir,$list_file=true,$check_children=false){
$list = path_list($dir,$list_file,$check_children);
$file_parem = array('filelist'=>array(),'folderlist'=>array());
$path_hidden = $this->config['setting_system']['path_hidden'];
$ex_name = explode(',',$path_hidden);
foreach ($list['filelist'] as $key => $val) {
if (in_array($val['name'],$ex_name)) continue;
if ($val['ext'] == 'oexe'){
$path = iconv_system($val['path']).'/'.iconv_system($val['name']);
$json = json_decode(file_get_contents($path),true);
if(is_array($json)) $val = array_merge($val,$json);
}
$file_parem['filelist'][] = $val;
}
foreach ($list['folderlist'] as $key => $val) {
if (in_array($val['name'],$ex_name)) continue;
$file_parem['folderlist'][] = $val;
}
_DIR_OUT($file_parem);
return $file_parem;
}
}

222
controller/user.class.php Normal file → Executable file
View File

@ -14,19 +14,29 @@ class user extends Controller
function __construct(){
parent::__construct();
$this->tpl = TEMPLATE . 'user/';
$this->user = &$_SESSION['kod_user'];
$this->notCheck = array('loginFirst','loginSubmit','checkCode');//不需要判断的action
if(!isset($_SESSION)){//避免session不可写导致循环跳转
$this->login("session write error!");
}else{
$this->user = &$_SESSION['kod_user'];
}
//不需要判断的action
$this->notCheck = array('loginFirst','login','logout','loginSubmit','checkCode','public_link');
}
/**
* 登陆状态检测;并初始化数据状态
*/
public function loginCheck(){
if(isset($_SESSION['kod_login']) && $_SESSION['kod_login'] === true){
if (ST == 'share') return true;//共享页面
if(in_array(ACT,$this->notCheck)){//不需要判断的action
return;
}else if(isset($_SESSION['kod_login']) && $_SESSION['kod_login'] === true){
define('USER',USER_PATH.$this->user['name'].'/');
define('USER_TEMP',USER.'data/temp/');
define('USER_RECYCLE',USER.'recycle/');
if (!file_exists(USER)) {
$this->logout();
return;
}
if ($this->user['role'] == 'root') {
define('MYHOME',USER.'home/');
@ -39,14 +49,16 @@ class user extends Controller
$GLOBALS['web_root'] = str_replace(WEB_ROOT,'',HOME);//从服务器开始到用户目录
$GLOBALS['is_root'] = 0;
}
$this->config['user_share_file'] = USER.'data/share.php'; // 收藏夹文件存放地址.
$this->config['user_fav_file'] = USER.'data/fav.php'; // 收藏夹文件存放地址.
$this->config['user_seting_file'] = USER.'data/config.php'; //用户配置文件
$this->config['user'] = fileCache::load($this->config['user_seting_file']);
return;
}else if(in_array(ACT,$this->notCheck)){//不需要判断的action
if(count($this->config['user'])<1){
$this->config['user'] = $this->config['setting_default'];
}
return;
}else if(isset($_COOKIE['kod_name']) && isset($_COOKIE['kod_token'])){
$member = new fileCache($this->config['system_file']['member']);
$member = new fileCache(USER_SYSTEM.'member.php');
$user = $member->get($_COOKIE['kod_name']);
if (!is_array($user) || !isset($user['password'])) {
$this->login();
@ -60,18 +72,74 @@ class user extends Controller
header('location:'.get_url());
exit;
}
}else{
if ($this->config['setting_system']['auto_login'] != '1') {
$this->logout();//不自动登录
}else{
if (!file_exists(USER_SYSTEM.'install.lock')) {
$this->display('install.html');exit;
}
header('location:./index.php?user/loginSubmit&name=guest&password=guest');
}
}
$this->login();
}
//临时文件访问
public function public_link(){
load_class('mcrypt');
$pass = $this->config['setting_system']['system_password'];
$path = Mcrypt::decode($this->in['fid'],$pass);
if (strlen($path) == 0) {
show_json($this->L['error'],false);
}
file_put_out($path);
}
public function common_js(){
$basic_path = BASIC_PATH;
if ($GLOBALS['is_root']) {
$basic_path = '/';//对非root用户隐藏所有地址
}
$the_config = array(
'lang' => $GLOBALS['language'],
'is_root' => $GLOBALS['is_root'],
'web_root' => $GLOBALS['web_root'],
'web_host' => HOST,
'static_path' => STATIC_PATH,
'basic_path' => BASIC_PATH,
'version' => KOD_VERSION,
'app_host' => APPHOST,
'office_server' => OFFICE_SERVER,
'myhome' => MYHOME,
'upload_max' => get_post_max(),
'json_data' => "",
'theme' => $this->config['user']['theme'], //列表排序依照的字段
'list_type' => $this->config['user']['list_type'], //列表排序依照的字段
'sort_field' => $this->config['user']['list_sort_field'], //列表排序依照的字段
'sort_order' => $this->config['user']['list_sort_order'], //列表排序升序or降序
'musictheme' => $this->config['user']['musictheme'],
'movietheme' => $this->config['user']['movietheme']
);
$js = 'LNG='.json_encode($GLOBALS['L']).';';
$js .= 'AUTH='.json_encode($GLOBALS['auth']).';';
$js .= 'G='.json_encode($the_config).';';
header("Content-Type:application/javascript");
echo $js;
}
/**
* 登陆view
*/
public function login($msg = ''){
public function login($msg = ''){
// session_start();
// setcookie('kod_name', null, time()-3600);
// setcookie('kod_token', null, time()-3600);
// setcookie('kod_user_language', '', time()-3600);
// session_destroy();
if (!file_exists(USER_SYSTEM.'install.lock')) {
$this->display('install.html');exit;
}
}
$this->assign('msg',$msg);
$this->display('login.html');
exit;
@ -82,17 +150,16 @@ class user extends Controller
*/
public function loginFirst(){
touch(USER_SYSTEM.'install.lock');
header('location:./index.php');
header('location:./index.php?user/login');
}
/**
* 退出处理
*/
public function logout(){
session_start();
setcookie('kod_name', null, time()-3600);
setcookie('kod_token', null, time()-3600);
setcookie('kod_name', '', time()-3600);
setcookie('kod_token', '', time()-3600);
setcookie('kod_user_language', '', time()-3600);
session_destroy();
header('location:./index.php?user/login');
}
@ -104,36 +171,38 @@ class user extends Controller
if(!isset($this->in['name']) || !isset($this->in['password'])) {
$msg = $this->L['login_not_null'];
}else{
//错误三次输入验证码
session_start();//re start
$name = $this->in['name'];
//错误三次输入验证码
$name = rawurldecode($this->in['name']);
$password = rawurldecode($this->in['password']);
session_start();//re start 有新的修改后调用
if(isset($_SESSION['code_error_time']) &&
intval($_SESSION['code_error_time']) >=3 &&
$_SESSION['check_code'] !== strtolower($this->in['check_code'])){
// pr($_SESSION['check_code'].'--'.strtolower($this->in['check_code']));exit;
$this->login($this->L['code_error']);
}
$member = new fileCache($this->config['system_file']['member']);
$member = new fileCache(USER_SYSTEM.'member.php');
$user = $member->get($name);
if ($user ===false){
$msg = $this->L['user_not_exists'];
$_SESSION['code_error_time'] = intval($_SESSION['code_error_time']) + 1;
}else if(md5($this->in['password'])==$user['password']){
}else if(md5($password)==$user['password']){
if($user['status'] == 0){//初始化app
$this->init_app($user);
$app = init_controller('app');
$app->init_app($user);
}
$group = new fileCache($this->config['system_file']['group']);
$_SESSION['kod_login'] = true;
$_SESSION['kod_user']= $user;
if ($this->in['rember_password'] == 'on') {
setcookie('kod_name', $user['name'], time()+3600*24*365);
setcookie('kod_token',md5($user['password'].get_client_ip()), time()+3600*24*365);
setcookie('kod_name', $user['name'], time()+3600*24*365);
if ($this->in['rember_password'] == '1') {
setcookie('kod_token',md5($user['password'].get_client_ip()),time()+3600*24*365);
}
header('location:./index.php');
return;
}else{
$_SESSION['code_error_time'] = intval($_SESSION['code_error_time']) + 1;
$msg = $this->L['password_error'];
}
$_SESSION['code_error_time'] = intval($_SESSION['code_error_time']) + 1;
}
$this->login($msg);
}
@ -146,7 +215,7 @@ class user extends Controller
$password_new=$this->in['password_new'];
if (!$password_now && !$password_new)show_json($this->L['password_not_null'],false);
if ($this->user['password']==md5($password_now)){
$sql=new fileCache($this->config['system_file']['member']);
$sql=new fileCache(USER_SYSTEM.'member.php');
$this->user['password'] = md5($password_new);
$sql->update($this->user['name'],$this->user);
setcookie('kod_token',md5(md5($password_new)),time()+3600*24*365);
@ -163,86 +232,55 @@ class user extends Controller
if (isset($GLOBALS['is_root']) && $GLOBALS['is_root'] == 1) return;
if (in_array(ACT,$this->notCheck)) return;
if (!array_key_exists(ST,$this->config['role_setting']) ) return;
if (!in_array(ACT,$this->config['role_setting'][ST])) return;
if (!in_array(ACT,$this->config['role_setting'][ST]) &&
ST.':'.ACT != 'user:common_js') return;//输出处理过的权限
//有权限限制的函数
$key = ST.':'.ACT;
$group = new fileCache($this->config['system_file']['group']);
$GLOBALS['auth'] = $auth = $group->get($this->user['role']);
$group = new fileCache(USER_SYSTEM.'group.php');
$auth= $group->get($this->user['role']);
//默认扩张功能等价权限
$auth['explorer:pathChmod'] = $auth['explorer:pathRname'];
$auth['explorer:pathCopyDrag'] = $auth['explorer:pathCuteDrag'];
if ($auth[$key] !== 1) show_json($this->L['no_permission'],false);
//向下版本兼容处理
//未定义;新版本首次使用默认开放的功能
if(!isset($auth['userShare:set'])){
$auth['userShare:set'] = 1;
}
if(!isset($auth['explorer:fileDownload'])){
$auth['explorer:fileDownload'] = 0;
}
//默认扩展功能 等价权限
$auth['user:common_js'] = 1;//权限数据配置后输出到前端
$auth['explorer:pathChmod'] = $auth['explorer:pathRname'];
$auth['explorer:pathDeleteRecycle'] = $auth['explorer:pathDelete'];
$auth['explorer:pathCopyDrag'] = $auth['explorer:pathCuteDrag'];
$auth['explorer:fileDownloadRemove']= $auth['explorer:fileDownload'];
$auth['explorer:zipDownload'] = $auth['explorer:fileDownload'];
$auth['explorer:fileProxy'] = $auth['explorer:fileDownload'];
$auth['explorer:makeFileProxy'] = $auth['explorer:fileDownload'];
$auth['userShare:del'] = $auth['userShare:set'];
if ($auth[$key] != 1) show_json($this->L['no_permission'],false);
$GLOBALS['auth'] = $auth;//全局
//扩展名限制:新建文件&上传文件&重命名文件&保存文件&zip解压文件
$check_arr = array(
'mkfile' => isset($this->in['path'])?$this->in['path']:'',
'pathRname' => isset($this->in['rname_to'])?$this->in['rname_to']:'',
'mkfile' => $this->check_key('path'),
'pathRname' => $this->check_key('rname_to'),
'fileUpload'=> isset($_FILES['file']['name'])?$_FILES['file']['name']:'',
'fileSave' => isset($this->in['path'])?$this->in['path']:''
'fileSave' => $this->check_key('path')
);
if (array_key_exists(ACT,$check_arr) && !checkExt($check_arr[ACT])){
show_json($this->L['no_permission_ext'],false);
}
}
private function check_key($key){
return isset($this->in[$key])? rawurldecode($this->in[$key]):'';
}
public function checkCode() {
session_start();//re start
header("Content-type: image/png");
$fontsize = 18;$len = 4;
$width = 70;$height=27;
$im = @imagecreatetruecolor($width, $height) or die("create image error!");
$background_color = imagecolorallocate($im, 255, 255, 255);
imagefill($im, 0, 0, $background_color);
for ($i = 0; $i < 2000; $i++) {//获取随机淡色
$line_color = imagecolorallocate($im, mt_rand(180,255),mt_rand(160, 255),mt_rand(100, 255));
imageline($im,mt_rand(0,$width),mt_rand(0,$height), //画直线
mt_rand(0,$width), mt_rand(0,$height),$line_color);
imagearc($im,mt_rand(0,$width),mt_rand(0,$height), //画弧线
mt_rand(0,$width), mt_rand(0,$height), $height, $width,$line_color);
}
$border_color = imagecolorallocate($im, 160, 160, 160);
imagerectangle($im, 0, 0, $width-1, $height-1, $border_color);//画矩形边框颜色200,200,200
$str = "ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789";
$code = '';
for ($i = 0; $i < $len; $i++) {//写入随机字串
$current = $str[mt_rand(0, strlen($str)-1)];
$text_color = imagecolorallocate($im,mt_rand(30, 140),mt_rand(30,140),mt_rand(30,140));
imagechar($im,10,$i*$fontsize+6,rand(1,$height/3),$current,$text_color);
$code.= $current;
}
imagepng($im);//显示图
imagedestroy($im);//销毁图片
$code = rand_string(4);
$_SESSION['check_code'] = strtolower($code);
}
/**
* 用户app初始化
*/
public function init_app($user) {
$sql=new fileCache($this->config['system_file']['apps']);
$list = $sql->get();
$default = array('365日历','pptv直播','ps','qq音乐','搜狐影视',
'时钟','水果忍者','计算器','豆瓣电台','音悦台');
$info = array();
foreach ($default as $key) {
$info[$key] = $list[$key];
}
$desktop = USER_PATH.$user['name'].'/home/desktop/';
foreach ($info as $key => $data) {
//touch($path);
$path = iconv_system($desktop.$key.'.oexe');
unset($data['name']);
unset($data['desc']);
unset($data['group']);
file_put_contents($path, json_encode($data));
}
$user['status'] = 1;
$member = new fileCache($this->config['system_file']['member']);
$member->update($user['name'],$user);
check_code($code);
}
}

93
controller/userShare.class.php Executable file
View File

@ -0,0 +1,93 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
class userShare extends Controller{
private $sql;
function __construct(){
parent::__construct();
$this->sql=new fileCache($this->config['user_share_file']);
}
/**
* 获取
*/
public function get() {
return $this->sql->get();
}
public function checkByPath(){
$share_list = $this->sql->get('path','',$this->in['path']);
//show_json($this->sql->get(),true,$this->in['path']);
if (count($share_list)==0) {
show_json('',false);//没有找到
}else{
$val = array_values($share_list);
show_json($val[0],true);
}
}
/**
* 编辑
*/
public function set(){
$share_info = $this->_getData();
//含有sid则为更新否则为插入
if (isset($this->in['sid']) && strlen($this->in['sid']) == 8) {
$info_new = $this->sql->get($this->in['sid']);
//只更新指定key
foreach ($share_info as $key=>$val) {
$info_new[$key] = $val;
}
if($this->sql->update($this->in['sid'],$info_new)){
show_json($info_new,true);
}
show_json($this->L['error'],false);
}else{//插入
$share_list = $this->sql->get();
$new_id = rand_string(8);
while (isset($share_list[$new_id])) {
$new_id = rand_string(8);
}
$share_info['sid'] = $new_id;
if($this->sql->add($new_id,$share_info)){
show_json($share_info,true);
}
show_json($this->L['error'],false);
}
show_json($this->L['error'],false);
}
/**
* 删除
*/
public function del() {
$list = json_decode($this->in['list'],true);
foreach ($list as $val) {
$this->sql->delete($val['path']);
}
show_json($this->L['success'],true);
}
public function _getData(){
if (!$this->in['name'] || !$this->in['path'] || !$this->in['type']){
show_json($this->L["data_not_full"],false);
}
$in = array(
'mtime'=>time(),//更新则记录最后时间
'sid'=>$this->in['sid'],
'type'=>$this->in['type'],
'path'=>$this->in['path'],
'name'=>$this->in['name'],
'time_to'=>$this->in['time_to']?$this->in['time_to']:'',
'share_password'=>$this->in['share_password']?$this->in['share_password']:'',
'code_read'=>$this->in['code_read']?$this->in['code_read']:'',
'not_download'=>$this->in['not_download']?$this->in['not_download']:''
);
return $in;
}
}

276
controller/util.php Normal file → Executable file
View File

@ -1,98 +1,178 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
//处理成标准目录
function _DIR_CLEAR($path){
$path = str_replace('\\','/',trim($path));
if (strstr($path,'../')) {//preg耗性能
$path = preg_replace('/\.+\/+/', '/', $path);
$path = preg_replace('/\/+/', '/', $path);
}
return str_replace('//','/',$path);
}
//处理成用户目录,并且不允许相对目录的请求操作
function _DIR($path){
$path = _DIR_CLEAR(rawurldecode($path));
$path = iconv_system($path);
if (substr($path,0,strlen(PUBLIC_PATH)) == PUBLIC_PATH) {
return $path;
}
$path = HOME.$path;
if (is_dir($path)) $path.='/';
return $path;
}
//处理成用户目录输出
function _DIR_OUT(&$arr){
if ($GLOBALS['is_root']) return;
if (is_array($arr)) {
foreach ($arr['filelist'] as $key => $value) {
$arr['filelist'][$key]['path'] = pre_clear($value['path']);
}
foreach ($arr['folderlist'] as $key => $value) {
$arr['folderlist'][$key]['path'] = pre_clear($value['path']);
}
}else{
$arr = pre_clear($arr);
}
}
//前缀处理 非root用户目录/从HOME开始
function pre_clear($path){
if (substr($path,0,strlen(PUBLIC_PATH)) == PUBLIC_PATH) {
return $path;
}
return str_replace(HOME, '', $path);
}
//扩展名权限判断
function checkExtUnzip($s,$info){
return checkExt($info['stored_filename']);
}
//扩展名权限判断 有权限则返回1 不是true
function checkExt($file,$changExt=false){
if ($GLOBALS['is_root'] == 1) return 1;
if ($file=='') return false;
$not_allow = $GLOBALS['auth']['ext_not_allow'];
$file = rawurldecode($file);
$ext_arr = explode('|',$not_allow);
foreach ($ext_arr as $current) {
if (stristr($file,'.'.$current)){//含有扩展名
return false;
}
}
return 1;
}
//语言包加载优先级cookie获取>自动识别
//首次没有cookie则自动识别——存入cookie,过期时间无限
function init_lang(){
if (isset($_COOKIE['kod_user_language'])) {
$lang = $_COOKIE['kod_user_language'];
}else{//没有cookie
preg_match('/^([a-z\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
$lang = $matches[1];
switch (substr($lang,0,2)) {
case 'zh':
if ($lang != 'zn-TW'){
$lang = 'zh-CN';
}
break;
case 'en':$lang = 'en';break;
default:$lang = 'en';break;
}
$lang = str_replace('-', '_',$lang);
setcookie('kod_user_language',$lang, time()+3600*24*365);
}
$GLOBALS['language'] = $lang;
define('LANGUAGE_TYPE', $lang);
include(LANGUAGE_PATH.$lang.'/main.php');
$GLOBALS['L'] = $L;
$GLOBALS['lang'] = $L;
}
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
//处理成标准目录
function _DIR_CLEAR($path){
$path = htmlspecial_decode($path);
$path = str_replace('\\','/',trim($path));
if (strstr($path,'../')) {//preg耗性能
$path = preg_replace('/\.+\/+/', '/', $path);
}
$path = preg_replace('/\/+/', '/', $path);
return $path;
}
//处理成用户目录,并且不允许相对目录的请求操作
function _DIR($path){
$path = _DIR_CLEAR(rawurldecode($path));
$path = iconv_system($path);
if (substr($path,0,strlen('*recycle*/')) == '*recycle*/') {
return USER_RECYCLE.str_replace('*recycle*/','',$path);
}
if (substr($path,0,strlen('*public*/')) == '*public*/') {
return PUBLIC_PATH.str_replace('*public*/','',$path);
}
if (substr($path,0,strlen('*share*/')) == '*share*/') {
return "*share*/";
}
$path = HOME.$path;
if (is_dir($path)) $path = rtrim($path,'/').'/';
return $path;
}
//处理成用户目录输出
function _DIR_OUT(&$arr){
xxsClear($arr);
if ($GLOBALS['is_root']) return;
if (is_array($arr)) {
foreach ($arr['filelist'] as $key => $value) {
$arr['filelist'][$key]['path'] = pre_clear($value['path']);
}
foreach ($arr['folderlist'] as $key => $value) {
$arr['folderlist'][$key]['path'] = pre_clear($value['path']);
}
}else{
$arr = pre_clear($arr);
}
}
//前缀处理 非root用户目录/从HOME开始
function pre_clear($path){
if (substr($path,0,strlen(PUBLIC_PATH)) == PUBLIC_PATH) {
return '*public*/'.str_replace(PUBLIC_PATH,'',$path);
}
return str_replace(HOME,'',$path);
}
function xxsClear(&$list){
if (is_array($list)) {
foreach ($list['filelist'] as $key => $value) {
$list['filelist'][$key]['ext'] = htmlspecial($value['ext']);
$list['filelist'][$key]['path'] = htmlspecial($value['path']);
$list['filelist'][$key]['name'] = htmlspecial($value['name']);
}
foreach ($list['folderlist'] as $key => $value) {
$list['folderlist'][$key]['path'] = htmlspecial($value['path']);
$list['folderlist'][$key]['name'] = htmlspecial($value['name']);
}
}else{
$list = htmlspecial($list);
}
}
function htmlspecial($str){
return str_replace(
array('<','>','"',"'"),
array('&lt;','&gt;','&quot;','&#039;','&amp;'),
$str
);
}
function htmlspecial_decode($str){
return str_replace(
array('&lt;','&gt;','&quot;','&#039;'),
array('<','>','"',"'"),
$str
);
}
//扩展名权限判断
function checkExtUnzip($s,$info){
return checkExt($info['stored_filename']);
}
//扩展名权限判断 有权限则返回1 不是true
function checkExt($file,$changExt=false){
if (strstr($file,'<') || strstr($file,'>') || $file=='') {
return 0;
}
if ($GLOBALS['is_root'] == 1) return 1;
$not_allow = $GLOBALS['auth']['ext_not_allow'];
$ext_arr = explode('|',$not_allow);
foreach ($ext_arr as $current) {
if (stristr($file,'.'.$current)){//含有扩展名
return 0;
}
}
return 1;
}
function php_env_check(){
$L = $GLOBALS['L'];
$error = '';
$base_path = get_path_this(BASIC_PATH).'/';
if(!function_exists('iconv')) $error.= '<li>'.$L['php_env_error_iconv'].'</li>';
if(!function_exists('mb_convert_encoding')) $error.= '<li>'.$L['php_env_error_mb_string'].'</li>';
if(!version_compare(PHP_VERSION,'5.0','>=')) $error.= '<li>'.$L['php_env_error_version'].'</li>';
if(!function_exists('file_get_contents')) $error.='<li>'.$L['php_env_error_file'].'</li>';
if(!path_writable(BASIC_PATH)) $error.= '<li>'.$base_path.$L['php_env_error_path'].'</li>';
if(!path_writable(BASIC_PATH.'data')) $error.= '<li>'.$base_path.'/data'.$L['php_env_error_path'].'</li>';
if(!path_writable(BASIC_PATH.'data/system')) $error.= '<li>'.$base_path.'/data/system'.$L['php_env_error_path'].'</li>';
if(!path_writable(BASIC_PATH.'data/User')) $error.= '<li>'.$base_path.'/data/User'.$L['php_env_error_path'].'</li>';
if(!path_writable(BASIC_PATH.'data/thumb')) $error.= '<li>'.$base_path.'/data/thumb'.$L['php_env_error_path'].'</li>';
if( !function_exists('imagecreatefromjpeg')||
!function_exists('imagecreatefromgif')||
!function_exists('imagecreatefrompng')||
!function_exists('imagecolorallocate')){
$error.= '<li>'.$L['php_env_error_gd'].'</li>';
}
return $error;
}
//语言包加载优先级cookie获取>自动识别
//首次没有cookie则自动识别——存入cookie,过期时间无限
function init_lang(){
if (isset($_COOKIE['kod_user_language'])) {
$lang = $_COOKIE['kod_user_language'];
}else{//没有cookie
preg_match('/^([a-z\-]+)/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $matches);
$lang = $matches[1];
switch (substr($lang,0,2)) {
case 'zh':
if ($lang != 'zn-TW'){
$lang = 'zh-CN';
}
break;
case 'en':$lang = 'en';break;
default:$lang = 'en';break;
}
$lang = str_replace('-', '_',$lang);
setcookie('kod_user_language',$lang, time()+3600*24*365);
}
$lang = str_replace(array('/','\\','..'),'',$lang);
define('LANGUAGE_TYPE', $lang);
include(LANGUAGE_PATH.$lang.'/main.php');
$GLOBALS['L'] = $L;
$GLOBALS['language'] = $lang;
}
function init_setting(){
$setting_file = USER_SYSTEM.'system_setting.php';
if (!file_exists($setting_file)){//不存在则建立
$setting = $GLOBALS['config']['setting_system_default'];
$setting['menu'] = $GLOBALS['config']['setting_menu_default'];
fileCache::save($setting_file,$setting);
}else{
$setting = fileCache::load($setting_file);
}
$GLOBALS['app']->setDefaultController($setting['first_in']);//设置默认控制器
$GLOBALS['app']->setDefaultAction('index'); //设置默认控制器函数
$GLOBALS['config']['setting_system'] = $setting;//全局
$GLOBALS['L']['kod_name'] = $setting['system_name'];
$GLOBALS['L']['kod_name_desc'] = $setting['system_desc'];
if (isset($setting['powerby'])) {
$GLOBALS['L']['kod_power_by'] = $setting['powerby'];
}
}

2
data/User/admin/data/config.php Normal file → Executable file
View File

@ -1 +1 @@
<?php exit;?>{"list_type":"icon","list_sort_field":"name","list_sort_order":"up","theme":"metro\/","codetheme":"crimson_editor","wall":"8","musictheme":"mp3player","movietheme":"webplayer"}
<?php exit;?>{"list_type":"icon","list_sort_field":"name","list_sort_order":"up","theme":"simple\/","codetheme":"clouds","wall":"7","musictheme":"mp3player","movietheme":"webplayer"}

View File

@ -1 +0,0 @@
<?php exit;?>{"font_size":"16px","theme":"eclipse","auto_wrap":"0","display_char":"0","auto_complete":"0"}

View File

@ -1 +0,0 @@
<?php exit;?>{"kod":{"name":"kod","path":"D:\/WWW\/www\/kod"},"0.000":{"name":"0.000","path":"D:\/WWW\/0.000\/"},"001":{"name":"001","path":"D:\/WWW\/www\/kod\/dev\/data\/User\/admin\/home\/001"}}

View File

@ -1 +0,0 @@
{"type":"url","content":"http:\/\/hoorayos.com\/demo\/extapp\/clock\/index.php","icon":"time.png","width":"140","height":"140","simple":1,"resize":0}

View File

@ -1 +0,0 @@
{"type":"url","content":"http:\/\/kuang.xiami.com\/kuang\/play\/xiamiradio","icon":"xiami.jpg","width":"530","height":"282","simple":0,"resize":1}

View File

@ -1 +0,0 @@
{"type":"url","content":"http:\/\/douban.fm\/partner\/qq_plus","icon":"douban.png","width":"545","height":"460","simple":0,"resize":1}

View File

@ -1 +0,0 @@
{"type":"url","content":"http:\/\/topic.kugou.com\/radio\/baiduNew.htm","icon":"kugou_radio.png","width":"554","height":"432","simple":0,"resize":1}

2
data/User/demo/data/config.php Normal file → Executable file
View File

@ -1 +1 @@
<?php exit;?>{"list_type":"icon","list_sort_field":"mtime","list_sort_order":"up","theme":"metro\/","codetheme":"github","wall":"1","musictheme":"mp3player","movietheme":"webplayer"}
<?php exit;?>{"list_type":"icon","list_sort_field":"name","list_sort_order":"up","theme":"simple\/","codetheme":"clouds","wall":"7","musictheme":"mp3player","movietheme":"webplayer"}

View File

@ -1 +0,0 @@
<?php exit;?>[]

View File

@ -1 +0,0 @@
{"type":"url","content":"http:\/\/baidu.html.zcom.com\/chuangyebang\/","icon":"chuangyebang.jpg","width":"545","height":"440","simple":0,"resize":1}

View File

@ -1 +0,0 @@
{"type":"url","content":"http:\/\/tv.e1951.com\/tv\/index.htm","icon":"app_s2.png","width":"800","height":"600","simple":0,"resize":1}

View File

@ -1 +0,0 @@
{"type":"url","content":"http:\/\/xiuxiu.web.meitu.com\/baidu\/","icon":"meitu.gif","width":"800","height":"570","simple":0,"resize":1}

2
data/User/guest/data/config.php Normal file → Executable file
View File

@ -1 +1 @@
<?php exit;?>{"list_type":"icon","list_sort_field":"mtime","list_sort_order":"up","theme":"metro\/","codetheme":"github","wall":"1","musictheme":"kuwo","movietheme":"webplayer"}
<?php exit;?>{"list_type":"icon","list_sort_field":"name","list_sort_order":"up","theme":"simple\/","codetheme":"clouds","wall":"7","musictheme":"mp3player","movietheme":"webplayer"}

View File

@ -1 +0,0 @@
<?php exit;?>[]

View File

66
data/i18n/en/about.html Normal file → Executable file
View File

@ -1,34 +1,34 @@
<div class="box">
<div class="title"><span> What's KODExplorer ?</span></div>
<p>KODExplorer is an open-source explorer and code editor based on web browser. It provides a kind of classic UI like Windows, file management, file preview, edit, upload and download, File compression and decompression, music playback you can do thatll on line. You can develop in the web browser side, the source file preview, and deploy the website directly, just like local operation as convenient, fast and safe experience.</p>
<p><b>——Design concept——</b></p>
<p>Inherit the classic traditions & strive for the innovation. To provide users with convenient, safe and easy to use online cloud management system.</p>
<p>Whenever, Wherever, Web browser, Want (if you want to do it), KODExplorer is your best choice.</p>
<p><b>——Users——</b></p>
<p>KODExplorer is a good solution for personal cloud system, SME resource management on line, Network-attached storage, Small and medium-sized Website management and so on.</p>
<p>If you are a Website programmer, you can do anything online, for example edit the source code file, compressed backup, deploy website… It will keep you away linux terminal command.</p>
<p>If you are a regular user, only need to install the KODExplorer on your server, you can listen to music, watch movies, upload (download) file to (from) your server.</p>
</div>
<div class="box">
<div class="title"><span>Features</span></div>
<p>Comprehensive document management, powerful online file.</p>
<p>Managing file wherever you go, coding online, listening music online at the same time, do it like in local system.</p>
<p>Just like the experience in the classic Windows: right-click, drag-and-drop, shortcuts and find file…</p>
<p>Select by dragging mouse pointer, move or upload with drag-and-drop, online editor, video player, pack and unpack files Comprehensive.</p>
<p>Seamless integration of all parts; in the form of dialog box, multi-task manager and other functions.</p>
<p>Online editor supports multiple label and more style such as Zen Coding, html,css,js…Higher coding efficiency</p>
<p>Perfect Chinese language support, no messy codes</p>
</div>
<div class="box">
<div class="title"><span>Open source technology</span></div>
<p><b>1.Jquery:</b>jpuery(plugin:Hotkeys.ztree.contentmenu).js A fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers.</p>
<p><b>2.ArtDialog:</b> A UI dialog on javascript, which is nice and easy to use for javascript effect. This module migrate artDialog to Drupal and help drupal developer to use artDialog in the projects.</p>
<p><b>3.Ztree:</b> A powerful and fast jQuery 'Tree' Plugin for creating Multi-functional Folder Trees with excellent performance and flexible configurations.</p>
<p><b>4.codemirror:</b> A versatile text editor implemented in JavaScript for the browser. It is specialized for editing code, and comes with a number of language modes and addons that implement more advanced editing functionality.</p>
<p><b>5.ZenCoding:</b> An editor plugin for high-speed HTML, XML, XSL (or any other structured code format) coding and editing. The core of this plugin is a powerful abbreviation engine which allows you to expand expressions—similar to CSS selectors—into HTML code.</p>
<p><b>6.less:</b> A CSS pre-processor, meaning that it extends the CSS language, adding features that allow variables, mixins, functions and many other techniques that allow you to make CSS that is more maintainable, themable and extendable.</p>
<p><b>7.SWFUpload:</b> A JavaScript Library that wraps the Flash Player's upload function. It brings your uploads to the next level with Multiple File Selection, Upload Progress and Client-side File Size Checking.</p>
<p><b>8.CMP4:</b> A very good flash player plug-in, support for streaming media, music video playback tool commonly used. Support for the skin, highly configurable settings. The play list is loading dynamically by XML, MMS streaming media, and support RSTP.</p>
<div class="box">
<div class="title"><span> What's KODExplorer ?</span></div>
<p>KODExplorer is an open-source explorer and code editor based on web browser. It provides a kind of classic UI like Windows, file management, file preview, edit, upload and download, File compression and decompression, music playback you can do thatll on line. You can develop in the web browser side, the source file preview, and deploy the website directly, just like local operation as convenient, fast and safe experience.</p>
<p><b>——Design concept——</b></p>
<p>Inherit the classic traditions & strive for the innovation. To provide users with convenient, safe and easy to use online cloud management system.</p>
<p>Whenever, Wherever, Web browser, Want (if you want to do it), KODExplorer is your best choice.</p>
<p><b>——Users——</b></p>
<p>KODExplorer is a good solution for personal cloud system, SME resource management on line, Network-attached storage, Small and medium-sized Website management and so on.</p>
<p>If you are a Website programmer, you can do anything online, for example edit the source code file, compressed backup, deploy website… It will keep you away linux terminal command.</p>
<p>If you are a regular user, only need to install the KODExplorer on your server, you can listen to music, watch movies, upload (download) file to (from) your server.</p>
</div>
<div class="box">
<div class="title"><span>Features</span></div>
<p>Comprehensive document management, powerful online file.</p>
<p>Managing file wherever you go, coding online, listening music online at the same time, do it like in local system.</p>
<p>Just like the experience in the classic Windows: right-click, drag-and-drop, shortcuts and find file…</p>
<p>Select by dragging mouse pointer, move or upload with drag-and-drop, online editor, video player, pack and unpack files Comprehensive.</p>
<p>Seamless integration of all parts; in the form of dialog box, multi-task manager and other functions.</p>
<p>Online editor supports multiple label and more style such as Zen Coding, html,css,js…Higher coding efficiency</p>
<p>Perfect Chinese language support, no messy codes</p>
</div>
<div class="box">
<div class="title"><span>Open source technology</span></div>
<p><b>1.Jquery:</b>jpuery(plugin:Hotkeys.ztree.contentmenu).js A fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers.</p>
<p><b>2.ArtDialog:</b> A UI dialog on javascript, which is nice and easy to use for javascript effect. This module migrate artDialog to Drupal and help drupal developer to use artDialog in the projects.</p>
<p><b>3.Ztree:</b> A powerful and fast jQuery 'Tree' Plugin for creating Multi-functional Folder Trees with excellent performance and flexible configurations.</p>
<p><b>4.codemirror:</b> A versatile text editor implemented in JavaScript for the browser. It is specialized for editing code, and comes with a number of language modes and addons that implement more advanced editing functionality.</p>
<p><b>5.ZenCoding:</b> An editor plugin for high-speed HTML, XML, XSL (or any other structured code format) coding and editing. The core of this plugin is a powerful abbreviation engine which allows you to expand expressions—similar to CSS selectors—into HTML code.</p>
<p><b>6.less:</b> A CSS pre-processor, meaning that it extends the CSS language, adding features that allow variables, mixins, functions and many other techniques that allow you to make CSS that is more maintainable, themable and extendable.</p>
<p><b>7.SWFUpload:</b> A JavaScript Library that wraps the Flash Player's upload function. It brings your uploads to the next level with Multiple File Selection, Upload Progress and Client-side File Size Checking.</p>
<p><b>8.CMP4:</b> A very good flash player plug-in, support for streaming media, music video playback tool commonly used. Support for the skin, highly configurable settings. The play list is loading dynamically by XML, MMS streaming media, and support RSTP.</p>
</div>

130
data/i18n/en/edit.html Normal file → Executable file
View File

@ -1,65 +1,65 @@
<div class="intro_left">
<div class="tips blue">
<h1> <span>Feature & functionally rich</span> </h1>
<p>code snippet automatically implemented property.</p>
<p>Multiple Style: Choose your favorite programming style</p>
<p>Custom Fonts: For using under a variety of scenarios</p>
<p>Multi-cursor editor, block editing online programming experience comparable to sublime</p>
<p>Code folding & unfoldingline wrap.</p>
<p>Support for multi-label;Drag to adjust the order.</p>
<p>Edit multiple documents simultaneously, find & replaceAnti maintain History.</p>
<p>Word completion such as [],{},(),"",''</p>
<p>Preview the result of programming online,make you like coding online!</p>
<p>Support Zen coding; Higher coding efficiency!</p>
<p>More features, waiting for your discovery…</p>
</div>
<div class="tips orange">
<h1> <span>A variety of code highlighting</span> </h1>
<p>Web Sidehtml,JavaScript,css,less,sass,scss</p>
<p>Web developingphp,perl,python,ruby,elang,go...</p>
<p>Traditional languagejava,c,c++,c#,actionScript,VBScript...</p>
<p>Othersmarkdown,shell,sql,lua,xml,yaml...</p>
</div>
</div>
<div class="intro_right">
<div class="tips green">
<h1> <span>Shortcuts</span> </h1>
<pre>Common Shortcuts
ctrl+s Save
ctrl+c Copy ctrl+v Paste
ctrl+z Undo ctrl+y Redo
ctrl+x Cut ctrl+a Select All
ctrl+f Find ctrl+f+f Replace
alt+0 Code folding All alt+shift+0 Code unfolding All
esc [exit searching, cancel auto-prompts...]</pre>
<pre>Select
Mouse select——drag
shift+home/end/up/left/down/right
shift+PageUp/PageDown Page UP & Down
ctrl+shift+ home/end Move the cursor to the beginning/end of line
alt+mouse Block selection</pre>
<pre> Cursor
home/end/up/left/down/right
ctrl+p Jump to matching tag
PageUp/PageDown Page UP & Down
ctrl+home/end Move the cursor to the beginning/end of line
alt+left/right Move the cursor to the beginning of line
shift+left/right Move the cursor to the beginning/end of line
ctrl+l Jump to the specified line
ctrl+alt+up/down Up(Down)adding cursor</pre>
<pre>Editing
ctrl+/ Mask & Unmask ctrl+alt+a Justified
table tab Alignment shift+table Overall forward a table
delete delete ctrl+d delete a line
ctrl+delete Delete the word to the right of the line
ctrl/shift+backspace Delete the word on the left
alt+shift+up/down copy the line & paste up/down of the line
alt+delete Delete the contents of the cursor to the right
alt+up/down The current line and the up/down line switching
ctrl+shift+d And add the following line to copy
ctrl+delete Delete the word to the right
ctrl+shift+u Converted to lowercase
ctrl+u Select the contents to uppercase</pre>
</div>
</div>
<div class="intro_left">
<div class="tips blue">
<h1> <span>Feature & functionally rich</span> </h1>
<p>code snippet automatically implemented property.</p>
<p>Multiple Style: Choose your favorite programming style</p>
<p>Custom Fonts: For using under a variety of scenarios</p>
<p>Multi-cursor editor, block editing online programming experience comparable to sublime</p>
<p>Code folding & unfoldingline wrap.</p>
<p>Support for multi-label;Drag to adjust the order.</p>
<p>Edit multiple documents simultaneously, find & replaceAnti maintain History.</p>
<p>Word completion such as [],{},(),"",''</p>
<p>Preview the result of programming online,make you like coding online!</p>
<p>Support Zen coding; Higher coding efficiency!</p>
<p>More features, waiting for your discovery…</p>
</div>
<div class="tips orange">
<h1> <span>A variety of code highlighting</span> </h1>
<p>Web Sidehtml,JavaScript,css,less,sass,scss</p>
<p>Web developingphp,perl,python,ruby,elang,go...</p>
<p>Traditional languagejava,c,c++,c#,actionScript,VBScript...</p>
<p>Othersmarkdown,shell,sql,lua,xml,yaml...</p>
</div>
</div>
<div class="intro_right">
<div class="tips green">
<h1> <span>Shortcuts</span> </h1>
<pre>Common Shortcuts
ctrl+s Save
ctrl+c Copy ctrl+v Paste
ctrl+z Undo ctrl+y Redo
ctrl+x Cut ctrl+a Select All
ctrl+f Find ctrl+f+f Replace
alt+0 Code folding All alt+shift+0 Code unfolding All
esc [exit searching, cancel auto-prompts...]</pre>
<pre>Select
Mouse select——drag
shift+home/end/up/left/down/right
shift+PageUp/PageDown Page UP & Down
ctrl+shift+ home/end Move the cursor to the beginning/end of line
alt+mouse Block selection</pre>
<pre> Cursor
home/end/up/left/down/right
ctrl+p Jump to matching tag
PageUp/PageDown Page UP & Down
ctrl+home/end Move the cursor to the beginning/end of line
alt+left/right Move the cursor to the beginning of line
shift+left/right Move the cursor to the beginning/end of line
ctrl+l Jump to the specified line
ctrl+alt+up/down Up(Down)adding cursor</pre>
<pre>Editing
ctrl+/ Mask & Unmask ctrl+alt+a Justified
table tab Alignment shift+table Overall forward a table
delete delete ctrl+d delete a line
ctrl+delete Delete the word to the right of the line
ctrl/shift+backspace Delete the word on the left
alt+shift+up/down copy the line & paste up/down of the line
alt+delete Delete the contents of the cursor to the right
alt+up/down The current line and the up/down line switching
ctrl+shift+d And add the following line to copy
ctrl+delete Delete the word to the right
ctrl+shift+u Converted to lowercase
ctrl+u Select the contents to uppercase</pre>
</div>
</div>

72
data/i18n/en/help.html Normal file → Executable file
View File

@ -1,36 +1,36 @@
<div class="box">
<div class="title"><span>Explorer</span></div>
<p><i class="icon-tags"></i>File select: Select objects by single-click, dragging the mouse pointer, shift + click, ctrl + click,or with the keyboard buttons up, down, left, right, home and end.</p>
<p><i class="icon-folder-open"></i>Files operation: Do more operations to the selected files such as copy, cut, delete, properties, pack, rename, preview and so on…</p>
<p><i class="icon-cloud-upload"></i>Files upload: multi-files upload; HTML5 upload by dragging to the window.</p>
<p><i class="icon-cogs"></i>Right-click: right-click function for files, folders, after selecting multiple objects, on the desktop, tree directory, shortcuts right-click menu.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(select all——copy——cut——paste——delete——rename——settings…)</p>
<p><i class="icon-sitemap"></i>File browser: view in list, icons; open a subfolder by double-click; address bar edit; back and forward in folder tree.</p>
<p><i class="icon-move"></i>Drag-and-drop: Cut the selected objects with drag-and-drop.</p>
<p><i class="icon-reply"></i>Shortcuts: delete, ctrl + A, ctrl + C, ctrl + X, up/down/left/right/home/end select icons.</p>
</div>
<div class="box">
<div class="title"><span>Preview Online</span></div>
<p><i class="icon-edit"></i>Files preview: view, edit and save the text filesPreview of HTML and SWF files.</p>
<p><i class="icon-picture"></i>Picture preview: automatically generate thumbnails, play slide show.</p>
<p><i class="icon-music"></i>Audio player: streaming music, video files; supporting MP3/4, WMA, MID, AAC, WAV.</p>
<p><i class="icon-play"></i>Video player: streaming video files: supporting FLV, F4V, 3gp.</p>
<p><i class="icon-play"></i>officeoffice preview online: supporting doc,docx,ppt,pptx,xls,xlsx.</p>
</div>
<div class="box">
<div class="title"><span>Shortcuts</span></div>
<p><i class="icon-tags"></i>enter Open</p>
<p><i class="icon-tags"></i>ctrl+a Select All</p>
<p><i class="icon-tags"></i>ctrl+c Copy</p>
<p><i class="icon-tags"></i>ctrl+v Paste</p>
<p><i class="icon-tags"></i>ctrl+x Cut</p>
<p><i class="icon-tags"></i>ctrl+f Find</p>
<p><i class="icon-tags"></i>alt+n New file</p>
<p><i class="icon-tags"></i>alt+m New folder</p>
<p><i class="icon-tags"></i>delete Delete</p>
<p><i class="icon-tags"></i>backspace Back</p>
<p><i class="icon-tags"></i>ctrl+backspace Forword</p>
<p><i class="icon-tags"></i>f2 Rename</p>
<p><i class="icon-tags"></i>home/end/up/down/left/right Select file</p>
<p><i class="icon-tags"></i>anykey After you start typing the first characters of your query, it will show any findings.</p>
</div>
<div class="box">
<div class="title"><span>Explorer</span></div>
<p><i class="icon-tags"></i>File select: Select objects by single-click, dragging the mouse pointer, shift + click, ctrl + click,or with the keyboard buttons up, down, left, right, home and end.</p>
<p><i class="icon-folder-open"></i>Files operation: Do more operations to the selected files such as copy, cut, delete, properties, pack, rename, preview and so on…</p>
<p><i class="icon-cloud-upload"></i>Files upload: multi-files upload; HTML5 upload by dragging to the window.</p>
<p><i class="icon-cogs"></i>Right-click: right-click function for files, folders, after selecting multiple objects, on the desktop, tree directory, shortcuts right-click menu.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(select all——copy——cut——paste——delete——rename——settings…)</p>
<p><i class="icon-sitemap"></i>File browser: view in list, icons; open a subfolder by double-click; address bar edit; back and forward in folder tree.</p>
<p><i class="icon-move"></i>Drag-and-drop: Cut the selected objects with drag-and-drop.</p>
<p><i class="icon-reply"></i>Shortcuts: delete, ctrl + A, ctrl + C, ctrl + X, up/down/left/right/home/end select icons.</p>
</div>
<div class="box">
<div class="title"><span>Preview Online</span></div>
<p><i class="icon-edit"></i>Files preview: view, edit and save the text filesPreview of HTML and SWF files.</p>
<p><i class="icon-picture"></i>Picture preview: automatically generate thumbnails, play slide show.</p>
<p><i class="icon-music"></i>Audio player: streaming music, video files; supporting MP3/4, WMA, MID, AAC, WAV.</p>
<p><i class="icon-play"></i>Video player: streaming video files: supporting FLV, F4V, 3gp.</p>
<p><i class="icon-play"></i>officeoffice preview online: supporting doc,docx,ppt,pptx,xls,xlsx.</p>
</div>
<div class="box">
<div class="title"><span>Shortcuts</span></div>
<p><i class="icon-tags"></i>enter Open</p>
<p><i class="icon-tags"></i>ctrl+a Select All</p>
<p><i class="icon-tags"></i>ctrl+c Copy</p>
<p><i class="icon-tags"></i>ctrl+v Paste</p>
<p><i class="icon-tags"></i>ctrl+x Cut</p>
<p><i class="icon-tags"></i>ctrl+f Find</p>
<p><i class="icon-tags"></i>alt+n New file</p>
<p><i class="icon-tags"></i>alt+m New folder</p>
<p><i class="icon-tags"></i>delete Delete</p>
<p><i class="icon-tags"></i>backspace Back</p>
<p><i class="icon-tags"></i>ctrl+backspace Forword</p>
<p><i class="icon-tags"></i>f2 Rename</p>
<p><i class="icon-tags"></i>home/end/up/down/left/right Select file</p>
<p><i class="icon-tags"></i>anykey After you start typing the first characters of your query, it will show any findings.</p>
</div>

828
data/i18n/en/main.php Normal file → Executable file
View File

@ -1,356 +1,474 @@
<?php
$L = array(
"config" => array(
"type" => "en",
"name" => "english",
"authoer" => "warlee"
),
//login
"login" => "login",
"guest_login" => "Guest",
"username" => "name",
"password" => "password",
"login_code" => "verification",
"login_rember_password" => "remember me",
"us" => "千帆网络工作室",
"login_not_null" => "username and password cant't empty!",
"code_error" => "verification code error",
"user_not_exists" => "user not exists!",
"password_error" => "password error!",
"password_not_null" => "password cant't empty!",
"old_password_error" => "old password error!",
"permission" => "permission",
"permission_edit" => "Permission Edit",
"no_permission" => "User without permission!",
"no_permission_ext" => "This type of file without permission",
"dialog_min" => "hide",
"dialog_min_all" => "hide all",
"dialog_display_all" => "display all",
"dialog_close_all" => "close all",
//desc
"title" => "kodexplorer-online explorer",
"title_name" => "kod online explorer",
//general
"open" => "open",
"open_with" => "open with",
"others" => "others",
"close" => "close",
"close_all" => "close all",
"close_right" => "close right item",
"close_others" => "close others",
"loading" => "loading...",
"warning" => "warning",
"getting" => "data getting...",
"sending" => "sending...",
"data_error" => "data error! ",
"get_success" => "success!",
"save_success" => "saved successfully!",
"success" => "successful operation",
"error" => "operation failed",
"error_repeat" => "named already exists!",
"system_error" => "system error",
"name" => "name",
"type" => "type",
"contain" => "contains",
"address" => "position",
"size" => "size",
"byte" => "byte",
"path" => "path",
"action" => "operation",
"create_time" => "create time",
"modify_time" => "modified",
"last_time" => "last visited",
"sort_type" => "sort of way",
"time_type" => "Y/m/d h:i",
"time_type_info" => "F j, Y, g:i a",
"public_path" => "Public path",
//right
"file" => "File",
"folder" => "Folder",
"copy" => "Copy",
"clone" => "Duplicate",
"past" => "Paste",
"cute" => "Cut",
"remove" => "Delete",
"info" => "get info",
"list_type" => "View",
"list_icon" => "icons",
"list_list" => "list",
"sort_up" => "asc",
"sort_down" => "desc",
"order_type" => "sort by",
"order_desc" => "desc",
"order_asc" => "asc",
"rename" => "rename",
"add_to_fav" => "add to bookmark",
"search_in_path" => "folder",
"add_to_play" => "add to playlist",
"manage_fav" => "manage bookmark",
"refresh_tree" => "reload tree",
"manage_folder" => "explorer",
"close_menu" => "close menu",
"zip" => "zip archive",
"unzip" => "unzip the file",
"clipboard" => "view the clipboard",
"full_screen" => "full screen(toggle)",
"tips" => "tips",
"ziping" => "archive loading...",
"unziping" => "unzip loading...",
"moving" => "move file",
"remove_title" => "delete confirmation",
"remove_info" => "confirmation remove the selected?",
"name_isexists" => "wrong,the name already exists! ",
"install" => 'install',
"width" => 'width',
"height" => 'height',
"app" => 'app',
"app_store" => 'app store',
"app_create" => 'create app',
"app_edit" => 'edit app',
"app_group_all" => 'all',
"app_group_game" => 'game',
"app_group_tools" => 'tools',
"app_group_reader" => 'read',
"app_group_movie" => 'movie',
"app_group_music" => 'music',
"app_group_life" => 'life',
"app_group_others" => 'others',
"app_desc" => 'description',
"app_icon" => 'logo',
"app_icon_show" => 'image url or such:',
"app_group" => 'group',
"app_type" => 'type',
"app_type_url" => 'link frame',
"app_type_code" => 'widget',
"app_display" => 'display',
"app_display_border" => 'no border(if selected)',
"app_display_size" => 'can resize(if selected)',
"app_size" => 'size',
"app_url" => 'url address',
"app_code" => 'js code',
//file management
"edit" => "edit",
"edit_can_not" => "is not a text file",
"edit_too_big" => "Cannot be greater than 20M",
"open_default" => "default mode",
"open_ie" => "browser opens",
"refresh" => "reload",
"refresh_all" => "reload forced",
"newfile" => "new file",
"newfolder" => "new folder",
"newothers" => "new other",
"path_loading" => "loading...",
"go" => "go!",
"go_up" => "go to parent directory",
"history_next" => "forward",
"history_back" => "back",
"address_in_edit" => "Click to enter the edit",
"double_click_rename" => "double click the title rename",
"double_click_open" => "double click to open",
"path_null" => "this folder is empty,you can drag and drop files to upload the window. ",
//download / upload
"upload" => "upload",
"upload_ready" => "loading...",
"uploading" => "uploading...",
"upload_success" => "uploaded successfully",
"upload_path_current" => "current",
"upload_select" => "select",
"upload_max_size" => "upload max size",
"upload_size_info" => "Please amend the maximum value allowed upload in php.ini. Greater than the configuration will be automatically filtered.",
"upload_error" => "upload failed",
"upload_muti" => "multiple file upload",
"upload_drag" => "drag and drop upload",
"upload_drag_tips" => "release can be uploaded!",
"path_not_allow" => "file name not allowed",
"download" => "download",
"download_address" => "url ",
"download_ready" => "download start",
"download_success" => "download success! ",
"download_error" => "Download_error.",
"download_error_create" => "Create file error.",
"download_error_exists" => "File does not exist.",
"upload_error_null" => "no files!",
"upload_error_big" => "file size too big",
"upload_error_move" => "move file failed! ",
"upload_error_exists" => "file already exists",
"upload_local" => "local upload",
"download_from_server" => "remote download",
"save_path" => "save path",
"upload_select_muti" => "select multiple files upload",
//search
"search" => "search",
"searching" => "searching...",
"search_null" => "no search results!",
"search_uplow" => "ignore case",
"search_content" => "file contents ",
"search_info" => "please enter a search term and path search! ",
"search_ext_tips" => "separated by |;such as php|js|css<br/>if null search in default text file",
"file_type" => "file type",
"goto" => "jump to",
"contain" => "contains",
"server_dwonload_desc" => "task is added to the download list",
"parent_permission" => "parent permission",
"root_path" => "Home",
"lib" => "library",
"fav" => "bookmark",
"desktop" => "desktop",
"browser" => "browser",
"my_cumputer" => "my computer",
"recycle" => "recycle",
"my_document" => "my documents",
"my_picture" => "my photos",
"my_music" => "my music",
"my_movie" => "my video",
"my_download" => "my download",
"ui_desktop" => "desktop",
"ui_filemanage" => "explorer",
"ui_editor" => "editor",
"adminer" => "adminer",
"ui_project_home" => "project home",
"ui_login" => "login",
"ui_logout" => "logout",
//set up
"setting" => "setting",
"setting_title" => "option",
"setting_user" => "basic",
"setting_password" => "change password",
"setting_password_old" => "old password",
"setting_password_new" => "new password",
"setting_language" => "Language",
"setting_member" => "member",
"setting_group" => "group",
"setting_group_add" => "add user group",
"setting_group_edit" => "edit user group",
"setting_theme" => "theme",
"setting_wall" => "wallpaper",
"setting_wall_diy" => "custom wallpaper:",
"setting_wall_info" => "url address,the local images can right picture browser open to get",
"setting_fav" => "bookmark",
"setting_player" => "player",
"setting_player_music" => "music player settings",
"setting_player_movie" => "video player settings",
"setting_help" => "help",
"setting_about" => "about",
"setting_success" => "setting successfully.",
"can_not_repeat" => "name already exists!",
"absolute_path" => "absolute address",
//setting page
"group" => "user group",
"data_not_full" => "data submission incomplete! ",
"default_user_can_not_do" => "default user cannot operate",
"default_group_can_not_do" => "default user groups cannot operate",
"username_can_not_null" => "user name cannot be empty! ",
"groupname_can_not_null" => "group name cannot be empty! ",
"groupdesc_can_not_null" => "user group description cannot be empty! ",
"group_move_user_error" => "belong to groups of users move failed",
"group_already_remove" => "the user group is deleted",
"group_not_exists" => "the user group does not exist",
"member_add" => "add user",
"password_null_not_update" => "empty representative doesn't modify the password",
"if_save_file" => "file has not been saved",
"if_remove" => "to confirm the deletion",
"member_remove_tips" => "delete the user directory will be empty",
"group_remove_tips" => "delete the user group<br/> (need to set user group)",
"group_name" => "group name",
"group_name_tips" => "Not allowed to repeat",
"group_desc" => "group desc",
"group_desc_tips" => "group display",
"group_role_ext" => "extension permission",
"group_role_ext_tips" => "separated by |;such as php|js|css",
"group_role_file" => "file explorer",
"group_role_upload" => "upload&download",
"group_role_user" => "user data",
"group_role_group" => "group",
"group_role_member" => "member",
"group_role_mkfile" => "make file",
"group_role_mkdir" => "make dir",
"group_role_pathrname" => "path rename",
"group_role_pathdelete" => "path remove",
"group_role_pathinfo" => "path get info",
"group_role_pathmove" => "move(copy/cute/past/drag to)",
"group_role_zip" => "zip",
"group_role_unzip" => "unzip",
"group_role_search" => "search",
"group_role_filesave" => "edit and save",
"group_role_can_upload" => "upload",
"group_role_upload" => "upload",
"group_role_download" => "server download",
"group_role_passowrd" => "change password",
"group_role_config" => "user data",
"group_role_fav" => "favourite(add/edit/delete)",
"group_role_list" => "list",
"group_role_member_add" => "member add",
"group_role_member_edit" => "member edit",
"group_role_member_del" => "member remove",
"group_role_group_add" => "group add",
"group_role_group_edit" => "group edit",
"group_role_group_del" => "group remove",
"group_role_ext_warning" => "Not allowed to specify the type of file upload,<br/> rename (renamed the specified extension), <br/>edit,save, remote download,unzip",
"group_tips"=>"<li>1.group name can not be repeated, modify group name belongs to the reorganization of the user is automatically associated </li><li>2. extension restriction relation system safety, please be careful operation <i> (fruit in the web directory of new PHP; means reform program permissions for this user name) </i></li><li>3. user management, privilege management; access and to the authority is bound; the program will automatically associated </li><li>4. set permissions can add permissions set, subsequent permission is not inherited <i> (this permission is equivalent to the highest authority) </i></li>",
//explorer_ajax
"not_null" => "required cannot be empty!",
"picture_can_not_null" => "picture address can not be empty!",
"rname_success" => "rename success! ",
"please_inpute_search_words" => "keypress 'enter' to search",
"remove_success" => "deleted successfully! ",
"remove_fali" => "delete failed!",
"clipboard_null" => "clipboard is empty! ",
"create_success" => "create successful! ",
"create_error" => "create failed,please check the directory permissions! ",
"copy_success" => "[copy]covering the clipboard copy success!",
"cute_success" => "[cut]covering the clipboard success!",
"clipboard_state" => "clipboard state:",
"no_permission_write" => "can't write,check the path or permission",
"copy_not_exists" => "source does not exist",
"current_has_parent" => "the destination folder is a subfolder of the source folder!",
"past_success" => "<b> paste operation to complete the </b>",
"cute_past_success" => "<b>cute</b> (cut complete,the clipboard is empty)",
"zip_success" => "compressed",
"not_zip" => "not compressed file",
"zip_null" => "did not choose the file or directory",
"unzip_success" => "unzip",
"gotoline" => "jump to line",
"path_is_current" => "open path and the path!",
"path_exists" => "name already exists! ",
// editor
"undo" => "undo",
"redo" => "redo",
"preview" => "preview",
"wordwrap" => "wrapping",
"char_all_display" => "show & invisible character",
"auto_complete" => "auto complete or not",
"code_theme" => "code theme",
"font_size" => "font",
//button
"button_ok" => "ok",
"button_submit" => "submit",
"button_set" => "set",
"button_cancle" => "cancel",
"button_edit" => "edit",
"button_save" => "save",
"button_save_all" => "save all",
"button_not_save" => "don't save",
"button_add" => "add",
"button_back_add" => "add and back",
"button_del" => "delete",
"button_save_edit" => "save",
"button_save_submit" => "save and send",
"button_select_all" => "Select / unselect all"
<?php
$L = array(
"upload_clear" =>'clear',
"upload_setting" =>"setting",
"upload_tips" =>'use piecewise upload, no longer limited to php.ini;',
"upload_exist" =>"duplicate files",
"upload_exist_rename" =>"rename",
"upload_exist_replace" =>"replace",
"upload_exist_skip" =>"skip",
"more" =>"more",
'system_setting' =>"System Setting",
"openProject" =>"Open with Project",
"url_download" =>"Download url",
"url_link" =>"Url",
"app_type_link" =>"Shortcut",
"createLink" =>"Create Shortcut",
"createProject" =>"Add to project",
"only_read" =>"Read Only",
"only_read_desc" =>"No permission to write",
"explorerNew" =>'kod link',
'zip_download_ready' =>'compression will automatically download, please wait...',
"set_background" =>"as your desktop wallpaper",
"share" =>"Share",
"share_title" =>"Resource sharing",
"share_name" =>"Share title",
"share_time" =>"Expiration time",
"share_time_desc" =>"Blank says don't set an expiration time",
"share_password" =>"Password",
"share_password_desc" =>"Vlank that do not need the password",
"share_cancle" =>"Cancel share",
"share_create" =>"Create Share",
"share_url" =>"Share Link",
"share_not_download" =>"Can't Download",
"share_not_download_tips" =>"Prohibit the download share! ",
"share_code_read" =>"Code reading",
"share_save" =>"Save Configuration",
"share_error_param" =>'parameter error!',
"share_error_user" =>'user information error!',
"share_error_sid" =>'share does not exist!',
"share_error_time" =>'you come late, this share has expired!',
"share_error_path" =>'The file does not exist, is deleted or moved away!',
"share_error_password" =>"Password error!",
'share_error_show_tips' =>"this file type does not support preview!",
"share_view_num" =>'view:',
"share_download_num" =>'download:',
"my_share" => "My share",
"share_edit" => "Edit share",
"share_remove" => "Cancle share",
"share_remove_tips" => "Determine the cancel share? The Share link will fail.",
"share_open_page" => "open sharing page",
"share_open_path" => "goto the file directory",
"recycle_clear" => 'Clear trash',
"recycle_clear_success" => "Clear trash success.",
"recycle_clear_info" => "are you sure clear recycle bin?",
"recycle_remove" => "delete",
"fav_remove" => "Cancle fav",
"remove_item" => "item",//删除3项内容 3 item
"uploading" =>"uploading",
'show_file' =>"new page preview",
"unknow_file_title" =>"file open tip!",
"unknow_file_tips" =>"not to support the open",
"unknow_file_download" =>"Download",
"unknow_file_office" =>"office preview,this process needs to be deployed in the network",
//editor
"shortcut" => 'Shortcuts',
"learnMore" => 'Learn more',
"code_mode" => 'syntax highlighter',
"replace" => 'Replace',
"selectAll" => 'Select All',
"reload" => "Reload",
"about" => "About",
'complete_current' => "Autocompletion",
"view" => 'View',
"tools" => "Tools",
"help" => "Help",
"not_exists" => "Not Exists",
"group_role_fileDownload" => "Download",
"group_role_share" => "Share",
"system_setting" => "system settings",
"system_setting_menu" => "menu management",
"system_name" => "program name",
"system_name_desc" => "logo program",
"system_desc" => "program description",
"path_hidden" => "directory exclusions",
"path_hidden_desc" => "Exclude directories and files,split with ','",
"new_user_folder" => "default directory",
"new_user_folder_desc" => "split with ','",
"new_user_app" =>"default app",
"new_user_app_desc" =>"Application Center, a comma separated",
"auto_login" =>"Guest auto login",
"auto_login_desc" =>"default:<code>guest</code>;ensure that the <code>guest</code> user exists",
"first_in" =>"after landing the default entry",
"menu_name" =>"Menu name",
"menu_hidden" =>"Hide",
"menu_show" =>"Show",
"menu_move_down" =>"Down",
"menu_move_up" =>"Up",
"menu_move_del" =>"remove",
"menu_open_window" =>"new window",
"url_path" =>"url link",
"url_path_desc" =>"url or javascript",
"no_permission_read" =>"does not have read permissions",
"php_env_check" => "Environment check:",
"php_env_error" => "Environment error:",
"php_env_error_ignore" =>"Ignore",
"php_env_error_version" =>"PHP version must more than 5.0",
"php_env_error_iconv" =>"not open iconv",
"php_env_error_mb_string" =>"not open mb_string",
"php_env_error_file" =>"not open file_get_contents",
"php_env_error_path" =>"can't write",
"php_env_error_gd" =>"not open php GD",
"install_login" =>"Use the following account login",
"install_enter" =>"Enter",
"install_user_default" =>"rootadmin/admin(need change)<br/>defaultdemo/demo<br/>guestguest/guest",
"copyright_desc" =>"This is a highly acclaimed web document management system, you can use it to do the internal document management or share, can also be used to manage the website on the server, instead of Ftp
Even as webIDE, can be directly online development. You can also integrate the two times the development of this program to your existing system. ",
'copyright_contact' =>'contract me:3232048103@qq.com <a href="javascript:core.openIE(\'http://kalcaddle.com/qa.html\');">Q&A</a>',
"copyright_info" =>'Copyright © <a href="http://kalcaddle.com/" target="_blank">kalcaddle.com</a> All rights reserved.',
"copyright_pre" =>'Powered by KodExplorer',
"kod_name" => "KodExplorer",
"kod_name_desc" => "kod online explorer",
"kod_power_by" => " - Powered by KodExplorer",
//login
"login" => "login",
"guest_login" => "Guest",
"username" => "name",
"password" => "password",
"login_code" => "verification",
"login_rember_password" => "remember me",
"us" => "千帆网络工作室",
"login_not_null" => "username and password cant't empty!",
"code_error" => "verification code error",
"user_not_exists" => "user not exists!",
"password_error" => "password error!",
"password_not_null" => "password cant't empty!",
"old_password_error" => "old password error!",
"permission" => "permission",
"permission_edit" => "Permission Edit",
"no_permission" => "User without permission!",
"no_permission_ext" => "This type of file without permission",
"dialog_min" => "hide",
"dialog_min_all" => "hide all",
"dialog_display_all" => "display all",
"dialog_close_all" => "close all",
//general
"open" => "open",
"open_with" => "open with",
"others" => "others",
"close" => "close",
"close_all" => "close all",
"close_right" => "close right item",
"close_others" => "close others",
"loading" => "loading...",
"warning" => "warning",
"getting" => "data getting...",
"sending" => "sending...",
"data_error" => "data error! ",
"get_success" => "success!",
"save_success" => "saved successfully!",
"success" => "successful operation",
"error" => "operation failed",
"error_repeat" => "named already exists!",
"system_error" => "system error",
"name" => "name",
"type" => "type",
"contain" => "contains",
"address" => "position",
"size" => "size",
"byte" => "byte",
"path" => "path",
"action" => "operation",
"create_time" => "create time",
"modify_time" => "modified",
"last_time" => "last visited",
"sort_type" => "sort of way",
"time_type" => "Y/m/d h:i:s",
"time_type_info" => "F j, Y, g:i a",
"public_path" => "Public path",
//right
"file" => "File",
"folder" => "Folder",
"copy" => "Copy",
"clone" => "Duplicate",
"past" => "Paste",
"cute" => "Cut",
"remove" => "Delete",
"info" => "get info",
"list_type" => "View",
"list_icon" => "icons",
"list_list" => "list",
"sort_up" => "asc",
"sort_down" => "desc",
"order_type" => "sort by",
"order_desc" => "desc",
"order_asc" => "asc",
"rename" => "rename",
"add_to_fav" => "add to bookmark",
"search_in_path" => "folder",
"add_to_play" => "add to playlist",
"manage_fav" => "manage bookmark",
"refresh_tree" => "reload tree",
"manage_folder" => "explorer",
"close_menu" => "close menu",
"zip" => "zip archive",
"unzip" => "unzip the file",
"clipboard" => "view the clipboard",
"full_screen" => "full screen(toggle)",
"tips" => "tips",
"ziping" => "archive loading...",
"unziping" => "unzip loading...",
"moving" => "move file",
"remove_title" => "delete confirmation",
"remove_info" => "confirmation remove the selected?",
"name_isexists" => "wrong,the name already exists! ",
"install" => 'install',
"width" => 'width',
"height" => 'height',
"app" => 'app',
"app_store" => 'app store',
"app_create" => 'create app',
"app_edit" => 'edit app',
"app_group_all" => 'all',
"app_group_game" => 'game',
"app_group_tools" => 'tools',
"app_group_reader" => 'read',
"app_group_movie" => 'movie',
"app_group_music" => 'music',
"app_group_life" => 'life',
"app_group_others" => 'others',
"app_desc" => 'description',
"app_icon" => 'logo',
"app_icon_show" => 'image url or such:',
"app_group" => 'group',
"app_type" => 'type',
"app_type_url" => 'link frame',
"app_type_code" => 'widget',
"app_display" => 'display',
"app_display_border" => 'no border(if selected)',
"app_display_size" => 'can resize(if selected)',
"app_size" => 'size',
"app_url" => 'url address',
"app_code" => 'js code',
//file management
"edit" => "edit",
"edit_can_not" => "is not a text file",
"edit_too_big" => "Cannot be greater than 20M",
"open_default" => "default mode",
"open_ie" => "browser opens",
"refresh" => "reload",
"refresh_all" => "reload forced",
"newfile" => "new file",
"newfolder" => "new folder",
"newothers" => "new other",
"path_loading" => "loading...",
"go" => "go!",
"go_up" => "go to parent directory",
"history_next" => "forward",
"history_back" => "back",
"address_in_edit" => "Click to enter the edit",
"double_click_rename" => "double click the title rename",
"double_click_open" => "double click to open",
"path_null" => "this folder is empty,you can drag and drop files to upload the window. ",
//download / upload
"upload" => "upload",
"upload_ready" => "loading...",
"uploading" => "uploading...",
"upload_success" => "uploaded successfully",
"upload_path_current" => "current",
"upload_select" => "select",
"upload_max_size" => "upload max size",
"upload_size_info" => "Please amend the maximum value allowed upload in php.ini. Greater than the configuration will be automatically filtered.",
"upload_error" => "upload failed",
"upload_muti" => "multiple file upload",
"upload_drag" => "drag and drop upload",
"upload_drag_tips" => "release can be uploaded!",
"path_not_allow" => "file name not allowed",
"download" => "download",
"download_address" => "url ",
"download_ready" => "download start",
"download_success" => "download success! ",
"download_error" => "Download_error.",
"download_error_create" => "Create file error.",
"download_error_exists" => "File does not exist.",
"upload_error_null" => "no files!",
"upload_error_big" => "file size too big",
"upload_error_move" => "move file failed! ",
"upload_error_exists" => "file already exists",
"upload_local" => "local upload",
"download_from_server" => "remote download",
"save_path" => "save path",
"upload_select_muti" => "select multiple files upload",
//search
"search" => "search",
"searching" => "searching...",
"search_null" => "no search results!",
"search_uplow" => "ignore case",
"search_content" => "file contents ",
"search_info" => "please enter a search term and path search! ",
"search_ext_tips" => "separated by |;such as php|js|css<br/>if null search in default text file",
"file_type" => "file type",
"goto" => "jump to",
"contain" => "contains",
"server_dwonload_desc" => "task is added to the download list",
"parent_permission" => "parent permission",
"root_path" => "Home",
"lib" => "library",
"fav" => "bookmark",
"desktop" => "desktop",
"browser" => "browser",
"my_cumputer" => "my computer",
"recycle" => "recycle",
"my_document" => "my documents",
"my_picture" => "my photos",
"my_music" => "my music",
"my_movie" => "my video",
"my_download" => "my download",
"ui_desktop" => "desktop",
"ui_explorer" => "explorer",
"ui_editor" => "editor",
"adminer" => "adminer",
"ui_project_home" => "project home",
"ui_login" => "login",
"ui_logout" => "logout",
//set up
"setting" => "setting",
"setting_title" => "option",
"setting_user" => "basic",
"setting_password" => "change password",
"setting_password_old" => "old password",
"setting_password_new" => "new password",
"setting_language" => "Language",
"setting_member" => "member",
"setting_group" => "group",
"setting_group_add" => "add user group",
"setting_group_edit" => "edit user group",
"setting_theme" => "theme",
"setting_wall" => "wallpaper",
"setting_wall_diy" => "custom wallpaper:",
"setting_wall_info" => "url address,the local images can right picture browser open to get",
"setting_fav" => "bookmark",
"setting_player" => "player",
"setting_player_music" => "music player settings",
"setting_player_movie" => "video player settings",
"setting_help" => "help",
"setting_about" => "about",
"setting_success" => "setting successfully.",
"can_not_repeat" => "name already exists!",
"absolute_path" => "absolute address",
//setting page
"group" => "user group",
"data_not_full" => "data submission incomplete! ",
"default_user_can_not_do" => "default user cannot operate",
"default_group_can_not_do" => "default user groups cannot operate",
"username_can_not_null" => "user name cannot be empty! ",
"groupname_can_not_null" => "group name cannot be empty! ",
"groupdesc_can_not_null" => "user group description cannot be empty! ",
"group_move_user_error" => "belong to groups of users move failed",
"group_already_remove" => "the user group is deleted",
"group_not_exists" => "the user group does not exist",
"member_add" => "add user",
"password_null_not_update" => "empty representative doesn't modify the password",
"if_save_file" => "file has not been saved",
"if_remove" => "to confirm the deletion",
"member_remove_tips" => "delete the user directory will be empty",
"group_remove_tips" => "delete the user group<br/> (need to set user group)",
"group_name" => "group name",
"group_name_tips" => "Not allowed to repeat",
"group_desc" => "group desc",
"group_desc_tips" => "group display",
"group_role_ext" => "extension permission",
"group_role_ext_tips" => "separated by |;such as php|js|css",
"group_role_file" => "file explorer",
"group_role_upload" => "upload&download",
"group_role_user" => "user data",
"group_role_group" => "group",
"group_role_member" => "member",
"group_role_mkfile" => "make file",
"group_role_mkdir" => "make dir",
"group_role_pathrname" => "path rename",
"group_role_pathdelete" => "path remove",
"group_role_pathinfo" => "path get info",
"group_role_pathmove" => "move(copy/cute/past/drag to)",
"group_role_zip" => "zip",
"group_role_unzip" => "unzip",
"group_role_search" => "search",
"group_role_filesave" => "edit and save",
"group_role_can_upload" => "upload",
"group_role_upload" => "upload",
"group_role_download" => "server download",
"group_role_passowrd" => "change password",
"group_role_config" => "user data",
"group_role_fav" => "favourite(add/edit/delete)",
"group_role_list" => "list",
"group_role_member_add" => "member add",
"group_role_member_edit" => "member edit",
"group_role_member_del" => "member remove",
"group_role_group_add" => "group add",
"group_role_group_edit" => "group edit",
"group_role_group_del" => "group remove",
"group_role_ext_warning" => "Not allowed to specify the type of file upload,<br/> rename (renamed the specified extension), <br/>edit,save, remote download,unzip",
"group_tips"=>"<li>1.group name can not be repeated, modify group name belongs to the reorganization of the user is automatically associated </li><li>2. extension restriction relation system safety, please be careful operation <i> (fruit in the web directory of new PHP; means reform program permissions for this user name) </i></li><li>3. user management, privilege management; access and to the authority is bound; the program will automatically associated </li><li>4. set permissions can add permissions set, subsequent permission is not inherited <i> (this permission is equivalent to the highest authority) </i></li>",
//explorer_ajax
"not_null" => "required cannot be empty!",
"picture_can_not_null" => "picture address can not be empty!",
"rname_success" => "rename success! ",
"please_inpute_search_words" => "keypress 'enter' to search",
"remove_success" => "deleted successfully! ",
"remove_fali" => "delete failed!",
"clipboard_null" => "clipboard is empty! ",
"create_success" => "create successful! ",
"create_error" => "create failed,please check the directory permissions! ",
"copy_success" => "[copy]covering the clipboard copy success!",
"cute_success" => "[cut]covering the clipboard success!",
"clipboard_state" => "clipboard state:",
"no_permission_write" => "can't write,check the path or permission",
"copy_not_exists" => "source does not exist",
"current_has_parent" => "the destination folder is a subfolder of the source folder!",
"past_success" => "<b> paste operation to complete the </b>",
"cute_past_success" => "<b>cute</b> (cut complete,the clipboard is empty)",
"zip_success" => "compressed",
"not_zip" => "not compressed file",
"zip_null" => "did not choose the file or directory",
"unzip_success" => "unzip",
"gotoline" => "jump to line",
"path_is_current" => "open path and the path!",
"path_exists" => "name already exists! ",
// editor
"undo" => "undo",
"redo" => "redo",
"preview" => "preview",
"wordwrap" => "wrapping",
"char_all_display" => "show & invisible character",
"auto_complete" => "auto complete or not",
"function_list" => "function list",
"code_theme" => "code theme",
"font_size" => "font",
//button
"button_ok" => "ok",
"button_submit" => "submit",
"button_set" => "set",
"button_cancel" => "cancel",
"button_edit" => "edit",
"button_save" => "save",
"button_save_all" => "save all",
"button_not_save" => "don't save",
"button_add" => "add",
"button_back_add" => "add and back",
"button_del" => "delete",
"button_save_edit" => "save",
"button_save_submit" => "save and send",
"button_select_all" => "Select / unselect all"
);

64
data/i18n/zh_CN/about.html Normal file → Executable file
View File

@ -1,33 +1,33 @@
<div class="box">
<div class="title"><span>是什么?</span></div>
<p>KODExplorer是一个公开源码的基于Web的在线文件管理、代码编辑器。它提供了类windows经典用户界面,一整套在线文件管理、文件预览、编辑、上传下载、在线解压缩、音乐播放功能。让你直接在浏览器端实现web开发、源码文件预览、网站部署的同时拥有与本地操作一样方便、快捷、安全的体验。</p>
<p><b>——设计理念——</b></p>
<p>传承经典,追求创新,为用户提供方便快捷、安全易用的在线云管理系统。</p>
<p>无论何时when、何地where,拥有web只要你想want它就是你的管理利器4W策略</p>
<p><b>——面向用户——</b></p>
<p>目前KODExplorer系统管理主要定位在个人云主机、中小企业云资源管理、网盘管理、中小型网站管理等。Web开发者&站长(老鸟):在线编辑、压缩备份、部署,经典windows界面操作,上手容易,远离了主机的SSH、ftp复杂枯燥的命令操作。</p>
<p>个人私有云(菜鸟):管理网盘资源,同样经典windows界面操作,可以就地浏览网盘音乐、视屏文件,上传下载快捷方便。</p>
</div>
<div class="box">
<div class="title"><span>特色</span></div>
<p>完备的文件管理,强大的在线文件编辑器</p>
<p>无论您在哪里,都可以管理您的文件;并可以在线娱乐,在线写代码!就像适宜用操作系统那样。</p>
<p>丰富的本地体验移植,右键操作,拖拽,框中选择,快捷键,文件搜索(内容中搜索)……</p>
<p>框中选择,拖拽移动,拖拽上传,在线编辑器,影音播放器,解压缩。全面ajax保证性能和体验</p>
<p>各个功能直接无缝连接;以对话框形式存在,多任务管理等功能</p>
<p>编辑器支持多文档支持ZendCoding html,css,js代码编写效率更高</p>
<p>完美中文支持,各种情况下乱码解决;</p>
</div>
<div class="box">
<div class="title"><span>开源技术采用</span></div>
<p><b>1.Jquery:</b>jpuery(plugin:Hotkeys.ztree.contentmenu).js主流开发框架。对Dom操作、BOM操作、css操作,以及Ajax封装</p>
<p><b>2.ArtDialog:</b>一个设计优美,对浏览器兼容性极强的对话框插件。使弹出窗口处理,事件以及数据的传输得到了更好的统一管理方式</p>
<p><b>3.Ztree:</b>列表树控件,扩展性很强的树形数据操作插件</p>
<p><b>4.codemirror:</b>一个代码编辑js插件,支持各种编程语言的高亮处理</p>
<p><b>5.zendcoding:</b>一个支持html代码快速编写插件。定义方式简化代码编写。有简单编译功能</p>
<p><b>6.less:</b>一种高效的,函数式css开发模式,提高前端css样式表的可复用性。有简单编译功能</p>
<p><b>7.SWFUpload:</b>flash多文件上传</p>
<p><b>8.CMP4:</b>一个非常优秀的flash媒体文件播放插件,支持流媒体,常用音乐视频的播放工具。支持换皮肤,高可配置性的设置。列表xml的动态加载。mms流媒体,rstp开源协议媒体播放支持</p>
<div class="box">
<div class="title"><span>是什么?</span></div>
<p>KODExplorer是一个公开源码的基于Web的在线文件管理、代码编辑器。它提供了类windows经典用户界面,一整套在线文件管理、文件预览、编辑、上传下载、在线解压缩、音乐播放功能。让你直接在浏览器端实现web开发、源码文件预览、网站部署的同时拥有与本地操作一样方便、快捷、安全的体验。</p>
<p><b>——设计理念——</b></p>
<p>传承经典,追求创新,为用户提供方便快捷、安全易用的在线云管理系统。</p>
<p>无论何时when、何地where,拥有web只要你想want它就是你的管理利器4W策略</p>
<p><b>——面向用户——</b></p>
<p>目前KODExplorer系统管理主要定位在个人云主机、中小企业云资源管理、网盘管理、中小型网站管理等。Web开发者&站长(老鸟):在线编辑、压缩备份、部署,经典windows界面操作,上手容易,远离了主机的SSH、ftp复杂枯燥的命令操作。</p>
<p>个人私有云(菜鸟):管理网盘资源,同样经典windows界面操作,可以就地浏览网盘音乐、视屏文件,上传下载快捷方便。</p>
</div>
<div class="box">
<div class="title"><span>特色</span></div>
<p>完备的文件管理,强大的在线文件编辑器</p>
<p>无论您在哪里,都可以管理您的文件;并可以在线娱乐,在线写代码!就像适宜用操作系统那样。</p>
<p>丰富的本地体验移植,右键操作,拖拽,框中选择,快捷键,文件搜索(内容中搜索)……</p>
<p>框中选择,拖拽移动,拖拽上传,在线编辑器,影音播放器,解压缩。全面ajax保证性能和体验</p>
<p>各个功能直接无缝连接;以对话框形式存在,多任务管理等功能</p>
<p>编辑器支持多文档支持ZendCoding html,css,js代码编写效率更高</p>
<p>完美中文支持,各种情况下乱码解决;</p>
</div>
<div class="box">
<div class="title"><span>开源技术采用</span></div>
<p><b>1.Jquery:</b>jpuery(plugin:Hotkeys.ztree.contentmenu).js主流开发框架。对Dom操作、BOM操作、css操作,以及Ajax封装</p>
<p><b>2.ArtDialog:</b>一个设计优美,对浏览器兼容性极强的对话框插件。使弹出窗口处理,事件以及数据的传输得到了更好的统一管理方式</p>
<p><b>3.Ztree:</b>列表树控件,扩展性很强的树形数据操作插件</p>
<p><b>4.codemirror:</b>一个代码编辑js插件,支持各种编程语言的高亮处理</p>
<p><b>5.zendcoding:</b>一个支持html代码快速编写插件。定义方式简化代码编写。有简单编译功能</p>
<p><b>6.less:</b>一种高效的,函数式css开发模式,提高前端css样式表的可复用性。有简单编译功能</p>
<p><b>7.SWFUpload:</b>flash多文件上传</p>
<p><b>8.CMP4:</b>一个非常优秀的flash媒体文件播放插件,支持流媒体,常用音乐视频的播放工具。支持换皮肤,高可配置性的设置。列表xml的动态加载。mms流媒体,rstp开源协议媒体播放支持</p>
</div>

128
data/i18n/zh_CN/edit.html Normal file → Executable file
View File

@ -1,64 +1,64 @@
<div class="intro_left">
<div class="tips blue">
<h1> <span>丰富的功能</span> </h1>
<p>代码自动提示</p>
<p>多主题:选择你喜欢的编程风格</p>
<p>自定义字体:适合种场景下使用</p>
<p>多光标编辑,块编辑等媲美sublime的在线编程体验</p>
<p>代码块折叠、展开;自动换行</p>
<p>支持多标签,拖动切换顺序;</p>
<p>维持多个文档、查找替换;历史记录;</p>
<p>自动补全[],{},(),"",''</p>
<p>在线实时预览,使您爱上在线编程!</p>
<p>zendcodeing支持,写代码健步如飞</p>
<p>更多功能,等待你的发现……</p>
</div>
<div class="tips orange">
<h1> <span>多种代码高亮</span> </h1>
<p>前端html,JavaScript,css,less,sass,scss</p>
<p>web开发php,perl,python,ruby,elang,go...</p>
<p>传统语言java,c,c++,c#,actionScript,VBScript...</p>
<p>其他markdown,shell,sql,lua,xml,yaml...</p>
</div>
</div>
<div class="intro_right">
<div class="tips green">
<h1> <span>快捷键操作</span> </h1>
<pre>常用快捷键:
ctrl+s 保存
ctrl+a 全选 ctrl+x 剪切
ctrl+c 复制 ctrl+v 粘贴
ctrl+z 撤销 ctrl+y 反撤销
ctrl+f 查找 ctrl+f+f 替换
alt+0 折叠所有 alt+shift+0 展开所有
esc [退出搜索,取消自动提示...]</pre>
<pre>选择:
鼠标框选——拖动
shift+home/end/up/left/down/right
shift+pageUp/PageDown 上下翻页选中
ctrl+shift+ home/end 当前光标到头尾
alt+鼠标拖动 块选择</pre>
<pre> 光标移动:
home/end/up/left/down/right
ctrl+home/end 光标移动到文档首/尾
ctrl+p 跳转到匹配的标签
pageUp/PageDown 光标上下翻页
alt+left/right 光标移动到行首位
shift+left/right 光标移动到行首&
ctrl+l 跳转到指定行
ctrl+alt+up/down 上(下)增加光标</pre>
<pre>编辑:
ctrl+/ 注释&取消注释 ctrl+alt+a 左右对齐
table tab对齐 shift+table 整体前移table
delete 删除 ctrl+d 删除整行
ctrl+delete 删除该行右侧单词
ctrl/shift+backspace 删除左侧单词
alt+shift+up/down 复制行并添加到上(下面)面
alt+delete 删除光标右侧内容
alt+up/down 当前行和上一行(下一行交换)
ctrl+shift+d 复制行并添加到下面
ctrl+delete 删除右侧单词
ctrl+shift+u 转换成小写 ctrl+u 选中内容转换成大写</pre>
</div>
</div>
<div class="intro_left">
<div class="tips blue">
<h1> <span>丰富的功能</span> </h1>
<p>代码自动提示</p>
<p>多主题:选择你喜欢的编程风格</p>
<p>自定义字体:适合种场景下使用</p>
<p>多光标编辑,块编辑等媲美sublime的在线编程体验</p>
<p>代码块折叠、展开;自动换行</p>
<p>支持多标签,拖动切换顺序;</p>
<p>维持多个文档、查找替换;历史记录;</p>
<p>自动补全[],{},(),"",''</p>
<p>在线实时预览,使您爱上在线编程!</p>
<p>zendcodeing支持,写代码健步如飞</p>
<p>更多功能,等待你的发现……</p>
</div>
<div class="tips orange">
<h1> <span>多种代码高亮</span> </h1>
<p>前端html,JavaScript,css,less,sass,scss</p>
<p>web开发php,perl,python,ruby,elang,go...</p>
<p>传统语言java,c,c++,c#,actionScript,VBScript...</p>
<p>其他markdown,shell,sql,lua,xml,yaml...</p>
</div>
</div>
<div class="intro_right">
<div class="tips green">
<h1> <span>快捷键操作</span> </h1>
<pre>常用快捷键:
ctrl+s 保存
ctrl+a 全选 ctrl+x 剪切
ctrl+c 复制 ctrl+v 粘贴
ctrl+z 撤销 ctrl+y 反撤销
ctrl+f 查找 ctrl+f+f 替换
alt+0 折叠所有 alt+shift+0 展开所有
esc [退出搜索,取消自动提示...]</pre>
<pre>选择:
鼠标框选——拖动
shift+home/end/up/left/down/right
shift+pageUp/PageDown 上下翻页选中
ctrl+shift+ home/end 当前光标到头尾
alt+鼠标拖动 块选择</pre>
<pre> 光标移动:
home/end/up/left/down/right
ctrl+home/end 光标移动到文档首/尾
ctrl+p 跳转到匹配的标签
pageUp/PageDown 光标上下翻页
alt+left/right 光标移动到行首位
shift+left/right 光标移动到行首&
ctrl+l 跳转到指定行
ctrl+alt+up/down 上(下)增加光标</pre>
<pre>编辑:
ctrl+/ 注释&取消注释 ctrl+alt+a 左右对齐
table tab对齐 shift+table 整体前移table
delete 删除 ctrl+d 删除整行
ctrl+delete 删除该行右侧单词
ctrl/shift+backspace 删除左侧单词
alt+shift+up/down 复制行并添加到上(下面)面
alt+delete 删除光标右侧内容
alt+up/down 当前行和上一行(下一行交换)
ctrl+shift+d 复制行并添加到下面
ctrl+delete 删除右侧单词
ctrl+shift+u 转换成小写 ctrl+u 选中内容转换成大写</pre>
</div>
</div>

72
data/i18n/zh_CN/help.html Normal file → Executable file
View File

@ -1,36 +1,36 @@
<div class="box">
<div class="title"><span>文件管理</span></div>
<p><i class="icon-tags"></i>文件选择:单选,鼠标框选,shift连选,ctrl随意选择,键盘上下左右、home、end选择。</p>
<p><i class="icon-folder-open"></i>文件操作:选择文件后,可以进行复制,剪切,删除,属性查看,压缩,重命名,打开预览等操作……</p>
<p><i class="icon-cloud-upload"></i>文件上传多文件批量上传html5拖拽上传(拖拽到窗口实现无缝上传,支持文件夹拖拽)</p>
<p><i class="icon-cogs"></i>右键功能:文件右键,文件夹右键,多选后右键操作,桌面右键,树目录右键操作,右键菜单绑定快捷键<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(全选——复制——剪切——粘贴——删除——重命名,设置……)</p>
<p><i class="icon-sitemap"></i>文件浏览:列表模式,图标模式;双击进入子文件夹;地址栏操作;打开文件夹记录逆势操作记录(前进后退)</p>
<p><i class="icon-move"></i>支持拖拽操作:选中后拖拽,实现剪切到指定文件夹功能</p>
<p><i class="icon-reply"></i>快捷键操作delete删除,ctrl+A全选,ctrl+C复制,ctrl+X剪切,文件搜索(内容中搜索)</p>
</div>
<div class="box">
<div class="title"><span>文件预览</span></div>
<p><i class="icon-edit"></i>文件预览文本文件内容查看编辑保存html,swf文件预览,</p>
<p><i class="icon-picture"></i>图片预览:自动生成缩略图,图片幻灯片播放;</p>
<p><i class="icon-music"></i>音频播放:在线播放音乐,视频文件支持mp3,wma,mid,aac,wav;mp4,</p>
<p><i class="icon-play"></i>视频播放:在线视频文件播放,支持格式flv,f4v,3gp</p>
<p><i class="icon-play"></i>officeoffice在线预览,支持格式doc,docx,ppt,pptx,xls,xlsx</p>
</div>
<div class="box">
<div class="title"><span>快捷键</span></div>
<p><i class="icon-tags"></i>enter 打开</p>
<p><i class="icon-tags"></i>ctrl+a 全选</p>
<p><i class="icon-tags"></i>ctrl+c 复制选中</p>
<p><i class="icon-tags"></i>ctrl+v 粘贴</p>
<p><i class="icon-tags"></i>ctrl+x 剪切</p>
<p><i class="icon-tags"></i>ctrl+f 当前目录进行搜索</p>
<p><i class="icon-tags"></i>alt+n 新建文件</p>
<p><i class="icon-tags"></i>alt+m 新建文件夹</p>
<p><i class="icon-tags"></i>delete 删除选中</p>
<p><i class="icon-tags"></i>backspace 后退</p>
<p><i class="icon-tags"></i>ctrl+backspace 前进</p>
<p><i class="icon-tags"></i>f2 重命名选中(文件文件夹)</p>
<p><i class="icon-tags"></i>home/end/up/down/left/right 选择文件</p>
<p><i class="icon-tags"></i>anykey 选中以按下字符首字母的文件&文件夹 自动循环选中</p>
</div>
<div class="box">
<div class="title"><span>文件管理</span></div>
<p><i class="icon-tags"></i>文件选择:单选,鼠标框选,shift连选,ctrl随意选择,键盘上下左右、home、end选择。</p>
<p><i class="icon-folder-open"></i>文件操作:选择文件后,可以进行复制,剪切,删除,属性查看,压缩,重命名,打开预览等操作……</p>
<p><i class="icon-cloud-upload"></i>文件上传多文件批量上传html5拖拽上传(拖拽到窗口实现无缝上传,支持文件夹拖拽)</p>
<p><i class="icon-cogs"></i>右键功能:文件右键,文件夹右键,多选后右键操作,桌面右键,树目录右键操作,右键菜单绑定快捷键<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(全选——复制——剪切——粘贴——删除——重命名,设置……)</p>
<p><i class="icon-sitemap"></i>文件浏览:列表模式,图标模式;双击进入子文件夹;地址栏操作;打开文件夹记录逆势操作记录(前进后退)</p>
<p><i class="icon-move"></i>支持拖拽操作:选中后拖拽,实现剪切到指定文件夹功能</p>
<p><i class="icon-reply"></i>快捷键操作delete删除,ctrl+A全选,ctrl+C复制,ctrl+X剪切,文件搜索(内容中搜索)</p>
</div>
<div class="box">
<div class="title"><span>文件预览</span></div>
<p><i class="icon-edit"></i>文件预览文本文件内容查看编辑保存html,swf文件预览,</p>
<p><i class="icon-picture"></i>图片预览:自动生成缩略图,图片幻灯片播放;</p>
<p><i class="icon-music"></i>音频播放:在线播放音乐,视频文件支持mp3,wma,mid,aac,wav;mp4,</p>
<p><i class="icon-play"></i>视频播放:在线视频文件播放,支持格式flv,f4v,3gp</p>
<p><i class="icon-play"></i>officeoffice在线预览,支持格式doc,docx,ppt,pptx,xls,xlsx</p>
</div>
<div class="box">
<div class="title"><span>快捷键</span></div>
<p><i class="icon-tags"></i>enter 打开</p>
<p><i class="icon-tags"></i>ctrl+a 全选</p>
<p><i class="icon-tags"></i>ctrl+c 复制选中</p>
<p><i class="icon-tags"></i>ctrl+v 粘贴</p>
<p><i class="icon-tags"></i>ctrl+x 剪切</p>
<p><i class="icon-tags"></i>ctrl+f 当前目录进行搜索</p>
<p><i class="icon-tags"></i>alt+n 新建文件</p>
<p><i class="icon-tags"></i>alt+m 新建文件夹</p>
<p><i class="icon-tags"></i>delete 删除选中</p>
<p><i class="icon-tags"></i>backspace 后退</p>
<p><i class="icon-tags"></i>ctrl+backspace 前进</p>
<p><i class="icon-tags"></i>f2 重命名选中(文件文件夹)</p>
<p><i class="icon-tags"></i>home/end/up/down/left/right 选择文件</p>
<p><i class="icon-tags"></i>anykey 选中以按下字符首字母的文件&文件夹 自动循环选中</p>
</div>

839
data/i18n/zh_CN/main.php Normal file → Executable file
View File

@ -1,361 +1,480 @@
<?php
$L= array(
"config" => array(
"type" => "zh_CN",
"name" => "简体中文",
"authoer" => "warlee"
),
//login
"login" => "登陆",
"guest_login" => "游客登录",
"username" => "用户名",
"password" => "密码",
"login_code" => "验证码",
"login_rember_password" => "记住密码",
"us" => "千帆网络工作室",
"login_not_null" => "用户名密码不能为空!",
"code_error" => "验证码错误",
"user_not_exists" => "用户名不存在!",
"password_error" => "密码错误!",
"password_not_null" => "密码不能为空!",
"old_password_error" => "原密码错误!",
"permission" => "权限!",
"permission_edit" => "修改权限",
"no_permission" => "您没有此权限!",
"no_permission_ext" => "您没有该类型文件权限",
"dialog_min" => "最小化",
"dialog_min_all" => "最小化所有",
"dialog_display_all" => "显示所有窗口",
"dialog_close_all" => "关闭所有窗口",
//网站描述
"title" => "KODExplorer-芒果云•资源管理器",
"title_name" => "芒果云•资源管理器",
//通用
"open" => "打开",
"others" => "其他",
"open_with" => "打开方式",
"close" => "关闭",
"close_all" => "关闭全部",
"close_right" => "关闭右侧标签",
"close_others" => "关闭其他",
"loading" => "操作中...",
"warning" => "警告",
"getting" => "获取中...",
"sending" => "数据发送中...",
"data_error" => "数据出错!",
"get_success" => "获取成功!",
"save_success" => "保存成功!",
"success" => "操作成功",
"error" => "操作失败",
"error_repeat" => "'操作失败,请注意名称不能重复!'",
"system_error" => "系统错误",
"name" => "名称",
"type" => "类型",
"contain" => "包含",
"address" => "位置",
"size" => "大小",
"byte" => "字节",
"path" => "路径",
"action" => "操作",
"create_time" => "创建时间",
"modify_time" => "修改时间",
"last_time" => "最后访问",
"sort_type" => "排序方式",
"time_type" => "Y/m/d H:i",
"time_type_info" => "Y年m月d日 H:i:s",
"public_path" => "公共目录",
//右键
"file" => "文件",
"folder" => "文件夹",
"copy" => "复制",
"past" => "粘贴",
"clone" => "创建副本",
"cute" => "剪切",
"remove" => "删除",
"info" => "属性",
"list_type" => "查看",
"list_icon" => "图标排列",
"list_list" => "列表排列",
"sort_up" => "递增",
"sort_down" => "递减",
"order_type" => "排序方式",
"order_desc" => "降序",
"order_asc" => "升序",
"rename" => "重命名",
"add_to_fav" => "添加到收藏夹",
"search_in_path" => "文件夹中搜索",
"add_to_play" => "添加到播放列表",
"manage_fav" => "管理收藏夹",
"refresh_tree" => "刷新树目录",
"manage_folder" => "管理目录",
"close_menu" => "关闭菜单",
"zip" => "zip压缩",
"unzip" => "zip解压到当前",
"clipboard" => "查看剪贴板",
"full_screen" => "全屏/退出全屏",
"tips" => "提示",
"ziping" => "正在压缩...",
"unziping" => "正在解压...",
"moving" => "移动操作中...",
"remove_title" => "删除确认",
"remove_info" => "确认删除选中内容吗?",
"name_isexists" => "出错了,该名称已存在!",
"install" => '安装',
"width" => '宽',
"height" => '高',
"app" => '应用',
"app_store" => '应用商店',
"app_create" => '创建应用',
"app_edit" => '修改应用',
"app_group_all" => '全部',
"app_group_game" => '游戏',
"app_group_tools" => '工具',
"app_group_reader" => '阅读',
"app_group_movie" => '影视',
"app_group_music" => '音乐',
"app_group_life" => '生活',
"app_group_others" => '其他',
"app_desc" => '描述',
"app_icon" => '应用图标',
"app_icon_show" => 'url地址或该目录',
"app_group" => '应用分组',
"app_type" => '类型',
"app_type_url" => '链接',
"app_type_code" => 'js扩展',
"app_display" => '外观',
"app_display_border" => '无边框(选中即无边框)',
"app_display_size" => '调整大小(选中即可调整)',
"app_size" => '尺寸',
"app_url" => '链接地址',
"app_code" => 'js 代码',
//文件管理
"edit" => "编辑",
"edit_can_not" => "不是文本文件",
"edit_too_big" => "文件太大,不能大于20M",
"open_default" => "默认方式打开",
"open_ie" => "浏览器打开",
"refresh" => "刷新",
"refresh_all" => "强制刷新",
"newfile" => "新建文件",
"newfolder" => "新建文件夹",
"newothers" => "新建其他",
"path_loading" => "载入中...",
"go" => "走着!",
"go_up" => "上层",
"history_next" => "前进",
"history_back" => "后退",
"address_in_edit" => "点击进入编辑状态",
"double_click_rename" => "双击名称重命名",
"double_click_open" => "双击打开",
"path_null" => "该文件夹为空,可以拖拽文件到该窗口上传。",
//上传下载
"upload" => "上传",
"upload_ready" => "等待上传...",
"uploading" => "上传中...",
"upload_success" => "上传成功",
"upload_path_current" => "切换到当前目录",
"upload_select" => "选择文件",
"upload_max_size" => "最大允许",
"upload_size_info" => "如果想配置更大请修改php.ini中允许上传的最大值。选择文件时,大于该配置的将自动过滤掉。",
"upload_error" => "上传失败",
"upload_muti" => "多文件上传",
"upload_drag" => "拖拽上传",
"upload_drag_tips" => "松开即可上传!",
"path_not_allow" => "文件名不允许出现",
"download" => "下载",
"download_address" => "下载地址",
"download_ready" => "即将下载",
"download_success" => "下载成功!",
"download_error" => "下载失败!",
"download_error_create" => "写入出错!",
"download_error_exists" => "远程文件不存在!",
"upload_error_null" => "没有文件!",
"upload_error_big" => "文件大小超过服务器限制",
"upload_error_move" => "移动文件失败!",
"upload_error_exists" => "该文件已存在",
"upload_local" => "本地上传",
"download_from_server" => "远程下载",
"save_path" => "保存路径",
"upload_select_muti" => "可选择多个文件上传",
//搜索
"search" => "搜索",
"searching" => "搜索中...",
"search_null" => "没有搜索结果!",
"search_uplow" => "区分大小写",
"search_content" => "搜索文件内容",
"search_info" => "请输入搜索词和路径进行搜索!",
"search_ext_tips" => "用|隔开;例如 php|js|css<br/>不填则搜索默认文本文件",
"file_type" => "文件类型",
"goto" => "跳转到",
"contain" => "包含",
"server_dwonload_desc" => "个任务加入到下载列表",
"parent_permission" => "父目录权限",
"root_path" => "我的文件",
"lib" => "",
"fav" => "收藏夹",
"desktop" => "桌面",
"browser" => "浏览器",
"my_cumputer" => "我的电脑",
"recycle" => "回收站",
"my_document" => "我的文档",
"my_picture" => "我的照片",
"my_music" => "我的音乐",
"my_movie" => "我的视频",
"my_download" => "我的下载",
//界面
"ui_desktop" => "桌面",
"ui_filemanage" => "文件管理",
"ui_editor" => "编辑器",
"adminer" => "adminer",
"ui_project_home" => "项目主页",
"ui_login" => "登陆",
"ui_logout" => "退出",
//设置
"setting" => "系统设置",
"setting_title" => "选项",
"setting_user" => "个人中心",
"setting_password" => "修改密码",
"setting_password_old" => "原密码",
"setting_password_new" => "修改为",
"setting_language" => "语言设置",
"setting_member" => "用户管理",
"setting_group" => "用户组管理",
"setting_group_add" => "添加用户组",
"setting_group_edit" => "编辑用户组",
"setting_theme" => "主题切换",
"setting_wall" => "更换壁纸",
"setting_wall_diy" => "自定义壁纸:",
"setting_wall_info" => "图片url地址本地图片可以右键图片浏览器打开即可得到",
"setting_fav" => "收藏夹管理",
"setting_player" => "播放器",
"setting_player_music" => "音乐播放器设置",
"setting_player_movie" => "视频播放器设置",
"setting_help" => "使用帮助",
"setting_about" => "关于作品",
"setting_success" => "修改已生效!",
"can_not_repeat" => "不允许重复",
"absolute_path" => "绝对地址",
// setting page
"group" => "用户组",
"data_not_full" => "数据提交不完整!",
"default_user_can_not_do" => "默认用户不能操作",
"default_group_can_not_do" => "默认用户组不能操作",
"username_can_not_null" => "用户名不能为空!",
"groupname_can_not_null" => "用户组名不能为空!",
"groupdesc_can_not_null" => "用户组描述不能为空!",
"group_move_user_error" => "所属用户组用户移动失败",
"group_already_remove" => "该用户组已被删除",
"group_not_exists" => "该用户组不存在",
"member_add" => "添加用户",
"password_null_not_update" => "密码不填表示不更改",
"if_save_file" => "文件尚未保存,是否保存?",
"if_remove" => "确认删除",
"member_remove_tips" => "删除后该用户目录会被清空",
"group_remove_tips" => "删除后该用户组用户无法登陆<br/>(需要重新设置用户组)",
"group_name" => "用户组名",
"group_name_tips" => "建议英文名,不能重复",
"group_desc" => "展示名称",
"group_desc_tips" => "组名描述",
"group_role_ext" => "扩展名限制",
"group_role_ext_tips" => "多个用|分隔开",
"group_role_file" => "文件管理",
"group_role_upload" => "上传下载",
"group_role_user" => "用户数据",
"group_role_group" => "用户组管理",
"group_role_member" => "用户管理",
"group_role_mkfile" => "新建文件",
"group_role_mkdir" => "新建文件夹",
"group_role_pathrname" => "重命名",
"group_role_pathdelete" => "文件(夹)删除",
"group_role_pathinfo" => "文件(夹)属性",
"group_role_pathmove" => "移动(复制/剪切/粘贴/拖拽操作)",
"group_role_zip" => "zip压缩",
"group_role_unzip" => "zip解压",
"group_role_search" => "搜索",
"group_role_filesave" => "编辑保存文件",
"group_role_can_upload" => "上传下载",
"group_role_upload" => "允许上传",
"group_role_download" => "远程下载",
"group_role_passowrd" => "修改密码",
"group_role_config" => "用户数据",
"group_role_fav" => "收藏夹操作(添加/编辑/删除)",
"group_role_list" => "列表查看",
"group_role_member_add" => "添加用户",
"group_role_member_edit" => "编辑用户",
"group_role_member_del" => "删除用户",
"group_role_group_add" => "添加用户组",
"group_role_group_edit" => "编辑用户组",
"group_role_group_del" => "删除用户组",
"group_role_ext_warning" => "不允许此类文件的上传,<br/>重命名(重命名为指定扩展名),<br/>编辑保存,远程下载,解压",
"group_tips"=>"<li>1.用户组名不能重复,修改组名后原属于改组用户会自动关联</li><li>2.扩展名限制关系系统安全性,请务必谨慎操作<i>(果在web目录下新建php;就意味着改程序的权限对此用户形同虚设)</i></li><li>3.户管理、权限组管理;查看权限和增删改权限是绑定的;程序会自动关联</li><li>4.设定权限组能添加权限组后,后续权限是不继承的<i>(此权限相当于最高权限)</i></li>",
//explorer_ajax
"not_null" => "必填项不能为空!",
"picture_can_not_null" => "图片地址不能为空!",
"rname_success" => "重命名成功!",
"please_inpute_search_words" => "请输入要搜索的字符串",
"remove_success" => "删除成功!",
"remove_fali" => "删除失败!",
"clipboard_null" => "剪贴板为空!",
"create_success" => "新建成功!",
"create_error" => "新建失败,请检查目录权限!",
"copy_success" => "【复制】—— 覆盖剪贴板成功!",
"cute_success" => "【剪切】—— 覆盖剪贴板成功!",
"clipboard_state" => "剪切板状态:",
"no_permission_write" => "该文件或目录没有写权限",
"copy_not_exists" => "来源不存在",
"current_has_parent" => "目标文件夹是源文件夹的子文件夹!",
"past_success" => "<b>粘贴操作完成</b>",
"cute_past_success" => "<b>剪切操作完成</b>(源文件被删除,剪贴板清空)",
"zip_success" => "压缩完成",
"not_zip" => "不是压缩文件",
"zip_null" => "没有选择的文件或目录",
"unzip_success" => "解压完成",
"gotoline" => "跳转到行",
"path_is_current" => "所打开路径和当前路径一样!",
"path_exists" => "该名称已存在!",
//编辑器
"undo" => "撤销",
"redo" => "反撤销",
"preview" => "预览",
"wordwrap" => "自动换行(不自动换行)",
"char_all_display" => "显示不可见字符(隐藏)",
"auto_complete" => "自动提示(取消)",
"code_theme" => "代码风格",
"font_size" => "字体",
//button
"button_ok" => "确定",
"button_submit" => "提交",
"button_set" => "设置",
"button_cancle" => "取消",
"button_edit" => "编辑",
"button_save" => "保存",
"button_save_all" => "保存全部",
"button_not_save" => "不保存",
"button_add" => "添加",
"button_back_add" => "返回添加",
"button_del" => "删除",
"button_save_edit" => "保存修改",
"button_save_submit" => "保存提交",
"button_select_all" => "全选/反选"
<?php
$L= array(
"upload_clear" =>'清空',
"upload_setting" =>"设置",
"upload_tips" =>'采用分片上传,不再受php.ini限制;推荐chrome体验文件夹拖拽上传',
"upload_exist" =>"同名文件处理",
"upload_exist_rename" =>"重命名",
"upload_exist_replace" =>"覆盖",
"upload_exist_skip" =>"跳过",
"more" =>"更多",
'system_setting' =>"系统设置",
"openProject" =>"编辑器打开项目",
"url_download" =>"下载地址",
"url_link" =>"外链地址",
"app_type_link" => "快捷方式",
"createLink" =>"创建快捷方式",
"createProject" =>"添加到编辑器工程",
"only_read" => "只读",
"only_read_desc" => "该目录没有写权限<br/>可以在操作系统中设置此目录的权限",
"explorerNew" => 'kod 链接',
'zip_download_ready' =>'压缩后会自动下载,请稍后...',
"set_background" =>"设置为桌面壁纸",
"share" =>"分享",
"share_title" =>"资源分享",
"share_name" =>"分享标题",
"share_time" =>"到期时间",
"share_time_desc" =>"留空表示不设置到期时间",
"share_password" =>"提取密码",
"share_password_desc" =>"留空表示不需要密码",
"share_cancle" =>"取消共享",
"share_create" =>"创建公开链接",
"share_url" =>"分享地址",
"share_not_download" =>"禁止下载",
"share_not_download_tips" =>"分享者禁止了下载!",
"share_code_read" =>"代码阅读",
"share_save" =>"保存配置",
"share_error_param" =>'参数错误!',
"share_error_user" =>'用户信息错误!',
"share_error_sid" =>'分享不存在!',
"share_error_time" =>'您来晚了,该分享已经过期!',
"share_error_path" =>'分享文件不存在,被删除或者移走了!',
"share_error_password" =>"密码错误!",
'share_error_show_tips' =>"该类型文件暂不支持预览!",
"share_view_num" =>'浏览:',
"share_download_num" =>'下载:',
"my_share" => "我的分享",
"share_edit" => "编辑分享",
"share_remove" => "取消分享",
"share_remove_tips" => "确定取消分享?公开连接将失效.",
"share_open_page" => "打开分享页面",
"share_open_path" => "进入文件所在目录",
"recycle_clear" => '清空回收站',
"recycle_clear_success" => "清空回收站成功!",
"recycle_clear_info" => "您确定要彻底删除回收站吗?",
"recycle_remove" => "彻底删除",
"fav_remove" => "取消收藏",
"remove_item" =>"项内容",//删除3项内容 3 item
"uploading" =>"正在上传",
'show_file' =>"新页面预览",
"unknow_file_title" =>"文件打开提示!",
"unknow_file_tips" =>"暂不支持打开",
"unknow_file_download" =>"下载到本地",
"unknow_file_office" =>"office预览,此程序需要部署在外网",
//editor
"shortcut" => '快捷键',
"learnMore" => '了解更多',
"code_mode" => '高亮语法',
"replace" => '替换',
"selectAll" => '全选',
"reload" => "重新载入",
"about" => "关于",
'complete_current' => "自动补全当前",
"view" => '视图',
"tools" => "工具",
"help" => "帮助",
"not_exists" => "不存在",
"group_role_fileDownload" => "文件下载",
"group_role_share" => "共享",
"system_setting" => "系统设置",
"system_setting_menu" => "菜单管理",
"system_name" => "程序名称",
"system_name_desc" => "程序logo标题",
"system_desc" => "程序描述",
"system_desc" => "程序描述",
"path_hidden" => "目录排除",
"path_hidden_desc" => "默认不显示的目录和文件,逗号隔开",
"new_user_folder" => "新用户默认创建目录",
"new_user_folder_desc" => "用逗号隔开",
"new_user_app" =>"新用户默认创建app",
"new_user_app_desc" =>"应用中心的应用,多个用逗号隔开",
"auto_login" =>"游客自动登录",
"auto_login_desc" =>"默认登录用户名为<code>guest</code>的用户;开启后确保<code>guest</code>用户存在",
"first_in" =>"登陆后默认进入",
"menu_name" =>"菜单名",
"menu_hidden" => "隐藏",
"menu_show" =>"显示",
"menu_move_down" =>"下移",
"menu_move_up" =>"上移",
"menu_move_del" =>"删除",
"menu_open_window" =>"新窗口打开",
"url_path" =>"url地址",
"url_path_desc" =>"url地址或js代码",
"no_permission_read" =>"该文件没有读取权限",
"php_env_check" => "运行环境监测:",
"php_env_error" => "环境错误:",
"php_env_error_ignore" =>"忽略",
"php_env_error_version" =>"PHP版本不能低于5.0",
"php_env_error_iconv" =>"未开启 iconv",
"php_env_error_mb_string" =>"未开启 mb_string",
"php_env_error_file" =>"未开启 file_get_contents",
"php_env_error_path" =>"不可写",
"php_env_error_gd" =>"须开启php GD库, 否则验证码、缩略图使用将不正常",
"install_login" =>"您可以用如下账号登陆",
"install_enter" =>"进入系统",
"install_user_default" =>"管理员admin/admin(请务必修改密码)<br/>普通用户demo/demo<br/>游客用户guest/guest",
"copyright_desc" =>"这是一款备受好评的web文档管理系统你可以用它来做内部文档管理或分享、也可以用来管理服务器上的网站取代Ftp
甚至可以当作webIDE直接在线开发。同时你也可以将此程序二次开发整合到你现有的系统。",
'copyright_contact' =>'授权或定制请联系QQ:<a href="http://wpa.qq.com/msgrd?v=3&uin=3232048103&site=qq&menu=yes" target="_blank">3232048103</a><a href="javascript:core.openIE(\'http://kalcaddle.com/qa.html\');">问题反馈</a>',
"copyright_info" =>'Copyright © <a href="http://kalcaddle.com/" target="_blank">kalcaddle.com</a> All rights reserved.',
"copyright_pre" =>'Powered by KodExplorer',
"kod_name" => "KodExplorer",
"kod_name_desc" => "芒果云•资源管理器",
"kod_power_by" => " - Powered by KodExplorer",
//login
"login" => "登陆 ",
"guest_login" => "游客登录",
"username" => "用户名",
"password" => "密码",
"login_code" => "验证码",
"login_rember_password" => "记住密码",
"us" => "千帆网络工作室",
"login_not_null" => "用户名密码不能为空!",
"code_error" => "验证码错误",
"user_not_exists" => "用户名不存在!",
"password_error" => "密码错误!",
"password_not_null" => "密码不能为空!",
"old_password_error" => "原密码错误!",
"permission" => "权限!",
"permission_edit" => "修改权限",
"no_permission" => "您没有此权限!",
"no_permission_ext" => "您没有该类型文件权限",
"dialog_min" => "最小化",
"dialog_min_all" => "最小化所有",
"dialog_display_all" => "显示所有窗口",
"dialog_close_all" => "关闭所有窗口",
//通用
"open" => "打开",
"others" => "其他",
"open_with" => "打开方式",
"close" => "关闭",
"close_all" => "关闭全部",
"close_right" => "关闭右侧标签",
"close_others" => "关闭其他",
"loading" => "操作中...",
"warning" => "警告",
"getting" => "获取中...",
"sending" => "数据发送中...",
"data_error" => "数据出错!",
"get_success" => "获取成功!",
"save_success" => "保存成功!",
"success" => "操作成功",
"error" => "操作失败",
"error_repeat" => "'操作失败,请注意名称不能重复!'",
"system_error" => "系统错误",
"name" => "名称",
"type" => "类型",
"contain" => "包含",
"address" => "位置",
"size" => "大小",
"byte" => "字节",
"path" => "路径",
"action" => "操作",
"create_time" => "创建时间",
"modify_time" => "修改时间",
"last_time" => "最后访问",
"sort_type" => "排序方式",
"time_type" => "Y/m/d H:i:s",
"time_type_info" => "Y年m月d日 H:i:s",
"public_path" => "公共目录",
//右键
"file" => "文件",
"folder" => "文件夹",
"copy" => "复制",
"past" => "粘贴",
"clone" => "创建副本",
"cute" => "剪切",
"remove" => "删除",
"info" => "属性",
"list_type" => "查看",
"list_icon" => "图标排列",
"list_list" => "列表排列",
"sort_up" => "递增",
"sort_down" => "递减",
"order_type" => "排序方式",
"order_desc" => "降序",
"order_asc" => "升序",
"rename" => "重命名",
"add_to_fav" => "添加到收藏夹",
"search_in_path" => "文件夹中搜索",
"add_to_play" => "添加到播放列表",
"manage_fav" => "管理收藏夹",
"refresh_tree" => "刷新树目录",
"manage_folder" => "管理目录",
"close_menu" => "关闭菜单",
"zip" => "zip压缩",
"unzip" => "zip解压到当前",
"clipboard" => "查看剪贴板",
"full_screen" => "全屏/退出全屏",
"tips" => "提示",
"ziping" => "正在压缩...",
"unziping" => "正在解压...",
"moving" => "移动操作中...",
"remove_title" => "删除确认",
"remove_info" => "确认删除选中内容吗?",
"name_isexists" => "出错了,该名称已存在!",
"install" => '安装',
"width" => '宽',
"height" => '高',
"app" => '应用',
"app_store" => '应用商店',
"app_create" => '创建应用',
"app_edit" => '修改应用',
"app_group_all" => '全部',
"app_group_game" => '游戏',
"app_group_tools" => '工具',
"app_group_reader" => '阅读',
"app_group_movie" => '影视',
"app_group_music" => '音乐',
"app_group_life" => '生活',
"app_group_others" => '其他',
"app_desc" => '描述',
"app_icon" => '应用图标',
"app_icon_show" => 'url地址或该目录',
"app_group" => '应用分组',
"app_type" => '类型',
"app_type_url" => '链接',
"app_type_code" => 'js扩展',
"app_display" => '外观',
"app_display_border" => '无边框(选中即无边框)',
"app_display_size" => '调整大小(选中即可调整)',
"app_size" => '尺寸',
"app_url" => '链接地址',
"app_code" => 'js 代码',
//文件管理
"edit" => "编辑",
"edit_can_not" => "不是文本文件",
"edit_too_big" => "文件太大,不能大于20M",
"open_default" => "默认方式打开",
"open_ie" => "浏览器打开",
"refresh" => "刷新",
"refresh_all" => "强制刷新",
"newfile" => "新建文件",
"newfolder" => "新建文件夹",
"newothers" => "新建其他",
"path_loading" => "载入中...",
"go" => "走着!",
"go_up" => "上层",
"history_next" => "前进",
"history_back" => "后退",
"address_in_edit" => "点击进入编辑状态",
"double_click_rename" => "双击名称重命名",
"double_click_open" => "双击打开",
"path_null" => "该文件夹为空,可以拖拽文件到该窗口上传。",
//上传下载
"upload" => "上传",
"upload_ready" => "等待上传...",
"uploading" => "上传中...",
"upload_success" => "上传成功",
"upload_path_current" => "切换到当前目录",
"upload_select" => "选择文件",
"upload_max_size" => "最大允许",
"upload_size_info" => "如果想配置更大请修改php.ini中允许上传的最大值。选择文件时,大于该配置的将自动过滤掉。",
"upload_error" => "上传失败",
"upload_muti" => "多文件上传",
"upload_drag" => "拖拽上传",
"upload_drag_tips" => "松开即可上传!",
"path_not_allow" => "文件名不允许出现",
"download" => "下载",
"download_address" => "下载地址",
"download_ready" => "即将下载",
"download_success" => "下载成功!",
"download_error" => "下载失败!",
"download_error_create" => "写入出错!",
"download_error_exists" => "远程文件不存在!",
"upload_error_null" => "没有文件!",
"upload_error_big" => "文件大小超过服务器限制",
"upload_error_move" => "移动文件失败!",
"upload_error_exists" => "该文件已存在",
"upload_local" => "本地上传",
"download_from_server" => "远程下载",
"save_path" => "保存路径",
"upload_select_muti" => "可选择多个文件上传",
//搜索
"search" => "搜索",
"searching" => "搜索中...",
"search_null" => "没有搜索结果!",
"search_uplow" => "区分大小写",
"search_content" => "搜索文件内容",
"search_info" => "请输入搜索词和路径进行搜索!",
"search_ext_tips" => "用|隔开;例如 php|js|css<br/>不填则搜索默认文本文件",
"file_type" => "文件类型",
"goto" => "跳转到",
"contain" => "包含",
"server_dwonload_desc" => "个任务加入到下载列表",
"parent_permission" => "父目录权限",
"root_path" => "我的文件",
"lib" => "",
"fav" => "收藏夹",
"desktop" => "桌面",
"browser" => "浏览器",
"my_cumputer" => "我的电脑",
"recycle" => "回收站",
"my_document" => "我的文档",
"my_picture" => "我的照片",
"my_music" => "我的音乐",
"my_movie" => "我的视频",
"my_download" => "我的下载",
//界面
"ui_desktop" => "桌面",
"ui_explorer" => "文件管理",
"ui_editor" => "编辑器",
"adminer" => "adminer",
"ui_project_home" => "项目主页",
"ui_login" => "登陆",
"ui_logout" => "退出",
//设置
"setting" => "系统设置",
"setting_title" => "选项",
"setting_user" => "个人中心",
"setting_password" => "修改密码",
"setting_password_old" => "原密码",
"setting_password_new" => "修改为",
"setting_language" => "语言设置",
"setting_member" => "用户管理",
"setting_group" => "用户组管理",
"setting_group_add" => "添加用户组",
"setting_group_edit" => "编辑用户组",
"setting_theme" => "主题切换",
"setting_wall" => "更换壁纸",
"setting_wall_diy" => "自定义壁纸:",
"setting_wall_info" => "图片url地址本地图片可以右键图片浏览器打开即可得到",
"setting_fav" => "收藏夹管理",
"setting_player" => "播放器",
"setting_player_music" => "音乐播放器设置",
"setting_player_movie" => "视频播放器设置",
"setting_help" => "使用帮助",
"setting_about" => "关于作品",
"setting_success" => "修改已生效!",
"can_not_repeat" => "不允许重复",
"absolute_path" => "绝对地址",
// setting page
"group" => "用户组",
"data_not_full" => "数据提交不完整!",
"default_user_can_not_do" => "默认用户不能操作",
"default_group_can_not_do" => "默认用户组不能操作",
"username_can_not_null" => "用户名不能为空!",
"groupname_can_not_null" => "用户组名不能为空!",
"groupdesc_can_not_null" => "用户组描述不能为空!",
"group_move_user_error" => "所属用户组用户移动失败",
"group_already_remove" => "该用户组已被删除",
"group_not_exists" => "该用户组不存在",
"member_add" => "添加用户",
"password_null_not_update" => "密码不填表示不更改",
"if_save_file" => "文件尚未保存,是否保存?",
"if_remove" => "确认删除",
"member_remove_tips" => "删除后该用户目录会被清空",
"group_remove_tips" => "删除后该用户组用户无法登陆<br/>(需要重新设置用户组)",
"group_name" => "用户组名",
"group_name_tips" => "建议英文名,不能重复",
"group_desc" => "展示名称",
"group_desc_tips" => "组名描述",
"group_role_ext" => "扩展名限制",
"group_role_ext_tips" => "多个用|分隔开",
"group_role_file" => "文件管理",
"group_role_upload" => "上传下载",
"group_role_user" => "用户数据",
"group_role_group" => "用户组管理",
"group_role_member" => "用户管理",
"group_role_mkfile" => "新建文件",
"group_role_mkdir" => "新建文件夹",
"group_role_pathrname" => "重命名",
"group_role_pathdelete" => "文件(夹)删除",
"group_role_pathinfo" => "文件(夹)属性",
"group_role_pathmove" => "移动(复制/剪切/粘贴/拖拽操作)",
"group_role_zip" => "zip压缩",
"group_role_unzip" => "zip解压",
"group_role_search" => "搜索",
"group_role_filesave" => "编辑保存文件",
"group_role_can_upload" => "上传下载",
"group_role_upload" => "允许上传",
"group_role_download" => "远程下载",
"group_role_passowrd" => "修改密码",
"group_role_config" => "配置数据",
"group_role_fav" => "收藏夹操作(添加/编辑/删除)",
"group_role_list" => "列表查看",
"group_role_member_add" => "添加用户",
"group_role_member_edit" => "编辑用户",
"group_role_member_del" => "删除用户",
"group_role_group_add" => "添加用户组",
"group_role_group_edit" => "编辑用户组",
"group_role_group_del" => "删除用户组",
"group_role_ext_warning" => "不允许此类文件的上传,<br/>重命名(重命名为指定扩展名),<br/>编辑保存,远程下载,解压",
"group_tips"=>"<li>1.用户组名不能重复,修改组名后原属于改组用户会自动关联</li><li>2.扩展名限制关系系统安全性,请务必谨慎操作<i>(果在web目录下新建php;就意味着改程序的权限对此用户形同虚设)</i></li><li>3.户管理、权限组管理;查看权限和增删改权限是绑定的;程序会自动关联</li><li>4.设定权限组能添加权限组后,后续权限是不继承的<i>(此权限相当于最高权限)</i></li>",
//explorer_ajax
"not_null" => "必填项不能为空!",
"picture_can_not_null" => "图片地址不能为空!",
"rname_success" => "重命名成功!",
"please_inpute_search_words" => "请输入要搜索的字符串",
"remove_success" => "删除成功!",
"remove_fali" => "删除失败!",
"clipboard_null" => "剪贴板为空!",
"create_success" => "新建成功!",
"create_error" => "新建失败,请检查目录权限!",
"copy_success" => "【复制】—— 覆盖剪贴板成功!",
"cute_success" => "【剪切】—— 覆盖剪贴板成功!",
"clipboard_state" => "剪切板状态:",
"no_permission_write" => "该文件或目录没有写权限",
"copy_not_exists" => "来源不存在",
"current_has_parent" => "目标文件夹是源文件夹的子文件夹!",
"past_success" => "<b>粘贴操作完成</b>",
"cute_past_success" => "<b>剪切操作完成</b>(源文件被删除,剪贴板清空)",
"zip_success" => "压缩完成",
"not_zip" => "不是压缩文件",
"zip_null" => "没有选择的文件或目录",
"unzip_success" => "解压完成",
"gotoline" => "跳转到行",
"path_is_current" => "所打开路径和当前路径一样!",
"path_exists" => "该名称已存在!",
//编辑器
"undo" => "撤销",
"redo" => "反撤销",
"preview" => "预览",
"wordwrap" => "自动换行(不自动换行)",
"char_all_display" => "显示不可见字符(隐藏)",
"auto_complete" => "自动提示(取消)",
"function_list" => "函数列表",
"code_theme" => "代码风格",
"font_size" => "字体",
//button
"button_ok" => "确定",
"button_submit" => "提交",
"button_set" => "设置",
"button_cancel" => "取消",
"button_edit" => "编辑",
"button_save" => "保存",
"button_save_all" => "保存全部",
"button_not_save" => "不保存",
"button_add" => "添加",
"button_back_add" => "返回添加",
"button_del" => "删除",
"button_save_edit" => "保存修改",
"button_save_submit" => "保存提交",
"button_select_all" => "全选/反选"
);

66
data/i18n/zh_TW/about.html Normal file → Executable file
View File

@ -1,33 +1,33 @@
<div class="box">
<div class="title"><span>是什麼?</span></div>
<p>KODExplorer是一個公開源碼的基於Web的線上檔管理、代碼編輯器。它提供了類windows經典使用者介面,一整套線上檔管理、文件預覽、編輯、上傳下載、線上解壓縮、音樂播放功能。讓你直接在流覽器端實現web開發、源碼檔預覽、網站部署的同時擁有與本地操作一樣方便、快捷、安全的體驗。</p>
<p><b>——設計理念——</b></p>
<p>傳承經典,追求創新,為用戶提供方便快捷、安全易用的線上雲管理系統。</p>
<p>無論何時when、何地where,擁有web只要你想want它就是你的管理利器4W策略</p>
<p><b>——面向用戶——</b></p>
<p>目前KODExplorer系統管理主要定位在個人雲主機、中小企業雲資源管理、網盤管理、中小型網站管理等。Web開發者&站長(老鳥):線上編輯、壓縮備份、部署,經典windows介面操作,上手容易,遠離了主機的SSH、ftp複雜枯燥的命令操作。</p>
<p>個人私有雲(菜鳥):管理網盤資源,同樣經典windows介面操作,可以就地流覽網盤音樂、視屏檔,上傳下載快捷方便。</p>
</div>
<div class="box">
<div class="title"><span>特色</span></div>
<p>完備的文件管理,強大的線上文件編輯器</p>
<p>無論您在哪裡,都可以管理您的檔;並可以線上娛樂,線上寫代碼!就像適宜用作業系統那樣。</p>
<p>豐富的本地體驗移植,右鍵操作,拖拽,框中選擇,快速鍵,檔搜索(內容中搜索)……</p>
<p>框中選擇,拖拽移動,拖拽上傳,線上編輯器,影音播放機,解壓縮。全面ajax保證性能和體驗</p>
<p>各個功能直接無縫連接;以對話方塊形式存在,多工管理等功能</p>
<p>編輯器支援多文檔支持ZendCoding html,css,js代碼編寫效率更高</p>
<p>完美中文支援,各種情況下亂碼解決;</p>
</div>
<div class="box">
<div class="title"><span>開源技術採用</span></div>
<p><b>1.Jquery:</b>jpuery(plugin:Hotkeys.ztree.contentmenu).js主流開發框架。對Dom操作、BOM操作、css操作,以及Ajax封裝</p>
<p><b>2.ArtDialog:</b>一個設計優美,對流覽器相容性極強的對話方塊外掛程式。使快顯視窗處理,事件以及資料的傳輸得到了更好的統一管理方式</p>
<p><b>3.Ztree:</b>清單樹控制項,擴展性很強的樹形資料操作外掛程式</p>
<p><b>4.codemirror:</b>一個代碼編輯js外掛程式,支援各種程式設計語言的高亮處理</p>
<p><b>5.zendcoding:</b>一個支持html代碼快速編寫外掛程式。定義方式簡化代碼編寫。有簡單編譯功能</p>
<p><b>6.less:</b>一種高效的,函數式css開發模式,提高前端css樣式表的可複用性。有簡單編譯功能</p>
<p><b>7.SWFUpload:</b>flash多文件上傳</p>
<p><b>8.CMP4:</b>一個非常優秀的flash媒體檔播放外掛程式,支持流媒體,常用音樂視頻的播放工具。支援換皮膚,高可配置性的設置。清單xml的動態載入。mms流媒體,rstp開源協定媒體播放支援</p>
</div>
<div class="box">
<div class="title"><span>是什麼?</span></div>
<p>KODExplorer是一個公開源碼的基於Web的線上檔管理、代碼編輯器。它提供了類windows經典使用者介面,一整套線上檔管理、文件預覽、編輯、上傳下載、線上解壓縮、音樂播放功能。讓你直接在流覽器端實現web開發、源碼檔預覽、網站部署的同時擁有與本地操作一樣方便、快捷、安全的體驗。</p>
<p><b>——設計理念——</b></p>
<p>傳承經典,追求創新,為用戶提供方便快捷、安全易用的線上雲管理系統。</p>
<p>無論何時when、何地where,擁有web只要你想want它就是你的管理利器4W策略</p>
<p><b>——面向用戶——</b></p>
<p>目前KODExplorer系統管理主要定位在個人雲主機、中小企業雲資源管理、網盤管理、中小型網站管理等。Web開發者&站長(老鳥):線上編輯、壓縮備份、部署,經典windows介面操作,上手容易,遠離了主機的SSH、ftp複雜枯燥的命令操作。</p>
<p>個人私有雲(菜鳥):管理網盤資源,同樣經典windows介面操作,可以就地流覽網盤音樂、視屏檔,上傳下載快捷方便。</p>
</div>
<div class="box">
<div class="title"><span>特色</span></div>
<p>完備的文件管理,強大的線上文件編輯器</p>
<p>無論您在哪裡,都可以管理您的檔;並可以線上娛樂,線上寫代碼!就像適宜用作業系統那樣。</p>
<p>豐富的本地體驗移植,右鍵操作,拖拽,框中選擇,快速鍵,檔搜索(內容中搜索)……</p>
<p>框中選擇,拖拽移動,拖拽上傳,線上編輯器,影音播放機,解壓縮。全面ajax保證性能和體驗</p>
<p>各個功能直接無縫連接;以對話方塊形式存在,多工管理等功能</p>
<p>編輯器支援多文檔支持ZendCoding html,css,js代碼編寫效率更高</p>
<p>完美中文支援,各種情況下亂碼解決;</p>
</div>
<div class="box">
<div class="title"><span>開源技術採用</span></div>
<p><b>1.Jquery:</b>jpuery(plugin:Hotkeys.ztree.contentmenu).js主流開發框架。對Dom操作、BOM操作、css操作,以及Ajax封裝</p>
<p><b>2.ArtDialog:</b>一個設計優美,對流覽器相容性極強的對話方塊外掛程式。使快顯視窗處理,事件以及資料的傳輸得到了更好的統一管理方式</p>
<p><b>3.Ztree:</b>清單樹控制項,擴展性很強的樹形資料操作外掛程式</p>
<p><b>4.codemirror:</b>一個代碼編輯js外掛程式,支援各種程式設計語言的高亮處理</p>
<p><b>5.zendcoding:</b>一個支持html代碼快速編寫外掛程式。定義方式簡化代碼編寫。有簡單編譯功能</p>
<p><b>6.less:</b>一種高效的,函數式css開發模式,提高前端css樣式表的可複用性。有簡單編譯功能</p>
<p><b>7.SWFUpload:</b>flash多文件上傳</p>
<p><b>8.CMP4:</b>一個非常優秀的flash媒體檔播放外掛程式,支持流媒體,常用音樂視頻的播放工具。支援換皮膚,高可配置性的設置。清單xml的動態載入。mms流媒體,rstp開源協定媒體播放支援</p>
</div>

128
data/i18n/zh_TW/edit.html Normal file → Executable file
View File

@ -1,64 +1,64 @@
<div class="intro_left">
<div class="tips blue">
<h1> <span>豐富的功能</span> </h1>
<p>代碼自動提示</p>
<p>多主題:選擇你喜歡的程式設計風格</p>
<p>自訂字體:適合種場景下使用</p>
<p>多游標編輯,塊編輯等媲美sublime的線上程式設計體驗</p>
<p>代碼塊折疊、展開;自動換行</p>
<p>支援多標籤,拖動切換順序;</p>
<p>維持多個文檔、查找替換;歷史記錄;</p>
<p>自動補全[],{},(),"",''</p>
<p>線上即時預覽,使您愛上線上程式設計!</p>
<p>zendcodeing支持,寫代碼健步如飛</p>
<p>更多功能,等待你的發現……</p>
</div>
<div class="tips orange">
<h1> <span>多種代碼高亮</span> </h1>
<p>前端html,JavaScript,css,less,sass,scss</p>
<p>web開發php,perl,python,ruby,elang,go...</p>
<p>傳統語言java,c,c++,c#,actionScript,VBScript...</p>
<p>其他markdown,shell,sql,lua,xml,yaml...</p>
</div>
</div>
<div class="intro_right">
<div class="tips green">
<h1> <span>快速鍵操作</span> </h1>
<pre>常用快速鍵:
ctrl+s 保存
ctrl+a 全選 ctrl+x 剪切
ctrl+c 複製 ctrl+v 粘貼
ctrl+z 撤銷 ctrl+y 反撤銷
ctrl+f 查找 ctrl+f+f 替換
alt+0 折疊所有 alt+shift+0 展開所有
esc [退出搜索,取消自動提示...]</pre>
<pre>選擇:
滑鼠框選——拖動
shift+home/end/up/left/down/right
shift+pageUp/PageDown 上下翻頁選中
ctrl+shift+ home/end 當前游標到頭尾
alt+滑鼠拖動 塊選擇</pre>
<pre> 游標移動:
home/end/up/left/down/right
ctrl+home/end 游標移動到文檔首/尾
ctrl+p 跳轉到匹配的標籤
pageUp/PageDown 游標上下翻頁
alt+left/right 游標移動到行首位
shift+left/right 游標移動到行首&
ctrl+l 跳轉到指定行
ctrl+alt+up/down 上(下)增加游標</pre>
<pre>編輯:
ctrl+/ 注釋&取消注釋 ctrl+alt+a 左右對齊
table tab對齊 shift+table 整體前移table
delete 刪除 ctrl+d 刪除整行
ctrl+delete 刪除該行右側單詞
ctrl/shift+backspace 刪除左側單詞
alt+shift+up/down 複製行並添加到上(下麵)面
alt+delete 刪除游標右側內容
alt+up/down 當前行和上一行(下一行交換)
ctrl+shift+d 複製行並添加到下麵
ctrl+delete 刪除右側單詞
ctrl+shift+u 轉換成小寫 ctrl+u 選中內容轉換成大寫</pre>
</div>
</div>
<div class="intro_left">
<div class="tips blue">
<h1> <span>豐富的功能</span> </h1>
<p>代碼自動提示</p>
<p>多主題:選擇你喜歡的程式設計風格</p>
<p>自訂字體:適合種場景下使用</p>
<p>多游標編輯,塊編輯等媲美sublime的線上程式設計體驗</p>
<p>代碼塊折疊、展開;自動換行</p>
<p>支援多標籤,拖動切換順序;</p>
<p>維持多個文檔、查找替換;歷史記錄;</p>
<p>自動補全[],{},(),"",''</p>
<p>線上即時預覽,使您愛上線上程式設計!</p>
<p>zendcodeing支持,寫代碼健步如飛</p>
<p>更多功能,等待你的發現……</p>
</div>
<div class="tips orange">
<h1> <span>多種代碼高亮</span> </h1>
<p>前端html,JavaScript,css,less,sass,scss</p>
<p>web開發php,perl,python,ruby,elang,go...</p>
<p>傳統語言java,c,c++,c#,actionScript,VBScript...</p>
<p>其他markdown,shell,sql,lua,xml,yaml...</p>
</div>
</div>
<div class="intro_right">
<div class="tips green">
<h1> <span>快速鍵操作</span> </h1>
<pre>常用快速鍵:
ctrl+s 保存
ctrl+a 全選 ctrl+x 剪切
ctrl+c 複製 ctrl+v 粘貼
ctrl+z 撤銷 ctrl+y 反撤銷
ctrl+f 查找 ctrl+f+f 替換
alt+0 折疊所有 alt+shift+0 展開所有
esc [退出搜索,取消自動提示...]</pre>
<pre>選擇:
滑鼠框選——拖動
shift+home/end/up/left/down/right
shift+pageUp/PageDown 上下翻頁選中
ctrl+shift+ home/end 當前游標到頭尾
alt+滑鼠拖動 塊選擇</pre>
<pre> 游標移動:
home/end/up/left/down/right
ctrl+home/end 游標移動到文檔首/尾
ctrl+p 跳轉到匹配的標籤
pageUp/PageDown 游標上下翻頁
alt+left/right 游標移動到行首位
shift+left/right 游標移動到行首&
ctrl+l 跳轉到指定行
ctrl+alt+up/down 上(下)增加游標</pre>
<pre>編輯:
ctrl+/ 注釋&取消注釋 ctrl+alt+a 左右對齊
table tab對齊 shift+table 整體前移table
delete 刪除 ctrl+d 刪除整行
ctrl+delete 刪除該行右側單詞
ctrl/shift+backspace 刪除左側單詞
alt+shift+up/down 複製行並添加到上(下麵)面
alt+delete 刪除游標右側內容
alt+up/down 當前行和上一行(下一行交換)
ctrl+shift+d 複製行並添加到下麵
ctrl+delete 刪除右側單詞
ctrl+shift+u 轉換成小寫 ctrl+u 選中內容轉換成大寫</pre>
</div>
</div>

72
data/i18n/zh_TW/help.html Normal file → Executable file
View File

@ -1,36 +1,36 @@
<div class="box">
<div class="title"><span>文件管理</span></div>
<p><i class="icon-tags"></i>檔選擇:單選,滑鼠框選,shift連選,ctrl隨意選擇,鍵盤上下左右、home、end選擇。</p>
<p><i class="icon-folder-open"></i>檔操作:選擇檔後,可以進行複製,剪切,刪除,屬性查看,壓縮,重命名,打開預覽等操作……</p>
<p><i class="icon-cloud-upload"></i>文件上傳多檔批量上傳html5拖拽上傳(拖拽到視窗實現無縫上傳,支持資料夾拖拽)</p>
<p><i class="icon-cogs"></i>右鍵功能:檔右鍵,資料夾右鍵,多選後右鍵操作,桌面右鍵,樹目錄右鍵操作,右鍵功能表綁定快速鍵<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(全選——複製——剪切——粘貼——刪除——重命名,設置……)</p>
<p><i class="icon-sitemap"></i>檔流覽:清單模式,圖示模式;按兩下進入子資料夾;位址欄操作;打開資料夾記錄逆勢操作記錄(前進後退)</p>
<p><i class="icon-move"></i>支援拖拽操作:選中後拖拽,實現剪切到指定資料夾功能</p>
<p><i class="icon-reply"></i>快速鍵操作delete刪除,ctrl+A全選,ctrl+C複製,ctrl+X剪切,檔搜索(內容中搜索)</p>
</div>
<div class="box">
<div class="title"><span>文件預覽</span></div>
<p><i class="icon-edit"></i>文件預覽文字檔內容查看編輯保存html,swf文件預覽,</p>
<p><i class="icon-picture"></i>圖片預覽:自動生成縮略圖,圖片幻燈片播放;</p>
<p><i class="icon-music"></i>音訊播放:線上播放音樂,視頻檔支持mp3,wma,mid,aac,wav;mp4,</p>
<p><i class="icon-play"></i>視頻播放:線上視頻檔播放,支援格式flv,f4v,3gp</p>
<p><i class="icon-play"></i>officeoffice線上預覽,支援格式doc,docx,ppt,pptx,xls,xlsx</p>
</div>
<div class="box">
<div class="title"><span>快速鍵</span></div>
<p><i class="icon-tags"></i>enter 打開</p>
<p><i class="icon-tags"></i>ctrl+a 全選</p>
<p><i class="icon-tags"></i>ctrl+c 複製選中</p>
<p><i class="icon-tags"></i>ctrl+v 粘貼</p>
<p><i class="icon-tags"></i>ctrl+x 剪切</p>
<p><i class="icon-tags"></i>ctrl+f 目前的目錄進行搜索</p>
<p><i class="icon-tags"></i>alt+n 新建文件</p>
<p><i class="icon-tags"></i>alt+m 新建資料夾</p>
<p><i class="icon-tags"></i>delete 刪除選中</p>
<p><i class="icon-tags"></i>backspace 後退</p>
<p><i class="icon-tags"></i>ctrl+backspace 前進</p>
<p><i class="icon-tags"></i>f2 重命名選中(檔資料夾)</p>
<p><i class="icon-tags"></i>home/end/up/down/left/right 選擇檔</p>
<p><i class="icon-tags"></i>anykey 選中以按下字元首字母的檔&資料夾 自動迴圈選中</p>
</div>
<div class="box">
<div class="title"><span>文件管理</span></div>
<p><i class="icon-tags"></i>檔選擇:單選,滑鼠框選,shift連選,ctrl隨意選擇,鍵盤上下左右、home、end選擇。</p>
<p><i class="icon-folder-open"></i>檔操作:選擇檔後,可以進行複製,剪切,刪除,屬性查看,壓縮,重命名,打開預覽等操作……</p>
<p><i class="icon-cloud-upload"></i>文件上傳多檔批量上傳html5拖拽上傳(拖拽到視窗實現無縫上傳,支持資料夾拖拽)</p>
<p><i class="icon-cogs"></i>右鍵功能:檔右鍵,資料夾右鍵,多選後右鍵操作,桌面右鍵,樹目錄右鍵操作,右鍵功能表綁定快速鍵<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(全選——複製——剪切——粘貼——刪除——重命名,設置……)</p>
<p><i class="icon-sitemap"></i>檔流覽:清單模式,圖示模式;按兩下進入子資料夾;位址欄操作;打開資料夾記錄逆勢操作記錄(前進後退)</p>
<p><i class="icon-move"></i>支援拖拽操作:選中後拖拽,實現剪切到指定資料夾功能</p>
<p><i class="icon-reply"></i>快速鍵操作delete刪除,ctrl+A全選,ctrl+C複製,ctrl+X剪切,檔搜索(內容中搜索)</p>
</div>
<div class="box">
<div class="title"><span>文件預覽</span></div>
<p><i class="icon-edit"></i>文件預覽文字檔內容查看編輯保存html,swf文件預覽,</p>
<p><i class="icon-picture"></i>圖片預覽:自動生成縮略圖,圖片幻燈片播放;</p>
<p><i class="icon-music"></i>音訊播放:線上播放音樂,視頻檔支持mp3,wma,mid,aac,wav;mp4,</p>
<p><i class="icon-play"></i>視頻播放:線上視頻檔播放,支援格式flv,f4v,3gp</p>
<p><i class="icon-play"></i>officeoffice線上預覽,支援格式doc,docx,ppt,pptx,xls,xlsx</p>
</div>
<div class="box">
<div class="title"><span>快速鍵</span></div>
<p><i class="icon-tags"></i>enter 打開</p>
<p><i class="icon-tags"></i>ctrl+a 全選</p>
<p><i class="icon-tags"></i>ctrl+c 複製選中</p>
<p><i class="icon-tags"></i>ctrl+v 粘貼</p>
<p><i class="icon-tags"></i>ctrl+x 剪切</p>
<p><i class="icon-tags"></i>ctrl+f 目前的目錄進行搜索</p>
<p><i class="icon-tags"></i>alt+n 新建文件</p>
<p><i class="icon-tags"></i>alt+m 新建資料夾</p>
<p><i class="icon-tags"></i>delete 刪除選中</p>
<p><i class="icon-tags"></i>backspace 後退</p>
<p><i class="icon-tags"></i>ctrl+backspace 前進</p>
<p><i class="icon-tags"></i>f2 重命名選中(檔資料夾)</p>
<p><i class="icon-tags"></i>home/end/up/down/left/right 選擇檔</p>
<p><i class="icon-tags"></i>anykey 選中以按下字元首字母的檔&資料夾 自動迴圈選中</p>
</div>

836
data/i18n/zh_TW/main.php Normal file → Executable file
View File

@ -1,361 +1,477 @@
<?php
$L= array(
"config" => array(
"type" => "zh_TW",
"name" => "簡體中文",
"authoer" => "warlee"
),
//login
"login" => "登陸",
"guest_login" => "游客登陸",
"username" => "用戶名",
"password" => "密碼",
"login_code" => "驗證碼",
"login_rember_password" => "記住密碼",
"us" => "千帆網路工作室",
"login_not_null" => "用戶名密碼不能為空!",
"code_error" => "驗證碼錯誤",
"user_not_exists" => "用戶名不存在!",
"password_error" => "密碼錯誤!",
"password_not_null" => "密碼不能為空!",
"old_password_error" => "原密碼錯誤!",
"permission" => "許可權!",
"permission_edit" => "修改权限",
"no_permission" => "您没有此权限!",
"no_permission_ext" => "您没有该类型文件权限",
"dialog_min" => "最小化",
"dialog_min_all" => "最小化所有",
"dialog_display_all" => "显示所有窗口",
"dialog_close_all" => "关闭所有窗口",
//網站描述
"title" => "KODExplorer-芒果雲•資源管理器",
"title_name" => "芒果雲•資源管理器",
//通用
"open" => "打開",
"others" => "其他",
"open_with" => "打開方式",
"close" => "關閉",
"close_all" => "關閉全部",
"close_right" => "關閉右側標籤",
"close_others" => "關閉其他",
"loading" => "操作中...",
"warning" => "警告",
"getting" => "獲取中...",
"sending" => "數據發送中...",
"data_error" => "數據出錯!",
"get_success" => "獲取成功!",
"save_success" => "保存成功!",
"success" => "操作成功",
"error" => "操作失敗",
"error_repeat" => "'操作失敗,請注意名稱不能重複!'",
"system_error" => "系統錯誤",
"name" => "名稱",
"type" => "類型",
"contain" => "包含",
"address" => "位置",
"size" => "大小",
"byte" => "位元組",
"path" => "路徑",
"action" => "操作",
"create_time" => "創建時間",
"modify_time" => "修改時間",
"last_time" => "最後訪問",
"sort_type" => "排序方式",
"time_type" => "Y/m/d H:i",
"time_type_info" => "Y年m月d日 H:i:s",
"public_path" => "公共目录",
//右鍵
"file" => "",
"folder" => "檔夾",
"copy" => "複製",
"clone" => "创建副本",
"past" => "粘貼",
"cute" => "剪切",
"remove" => "刪除",
"info" => "屬性",
"list_type" => "查看",
"list_icon" => "圖示排列",
"list_list" => "列表排列",
"sort_up" => "遞增",
"sort_down" => "遞減",
"order_type" => "排序方式",
"order_desc" => "降序",
"order_asc" => "昇冪",
"rename" => "重命名",
"add_to_fav" => "添加到收藏夾",
"search_in_path" => "檔夾中搜索",
"add_to_play" => "添加到播放列表",
"manage_fav" => "管理收藏夾",
"refresh_tree" => "刷新樹目錄",
"manage_folder" => "管理目錄",
"close_menu" => "關閉菜單",
"zip" => "zip壓縮",
"unzip" => "zip解壓到當前",
"clipboard" => "查看剪貼板",
"full_screen" => "全屏/退出全屏",
"tips" => "提示",
"ziping" => "正在壓縮...",
"unziping" => "正在解壓...",
"moving" => "移動操作中...",
"remove_title" => "刪除確認",
"remove_info" => "确认删除选中内容吗?",
"name_isexists" => "出錯了,該名稱已存在!",
"install" => '安裝',
"width" => '寬',
"height" => '高',
"app" => '應用',
"app_store" => '應用商店',
"app_create" => '創建應用',
"app_edit" => '修改應用',
"app_group_all" => '全部',
"app_group_game" => '遊戲',
"app_group_tools" => '工具',
"app_group_reader" => '閱讀',
"app_group_movie" => '影視',
"app_group_music" => '音樂',
"app_group_life" => '生活',
"app_group_others" => '其他',
"app_desc" => '描述',
"app_icon" => '應用圖示',
"app_icon_show" => 'url地址或該目錄',
"app_group" => '應用分組',
"app_type" => '類型',
"app_type_url" => '鏈接',
"app_type_code" => 'js擴展',
"app_display" => '外觀',
"app_display_border" => '無邊框(選中即無邊框)',
"app_display_size" => '調整大小(選中即可調整)',
"app_size" => '尺寸',
"app_url" => '鏈接地址',
"app_code" => 'js 代碼',
//檔管理
"edit" => "編輯",
"edit_can_not" => "不是文本檔",
"edit_too_big" => "文件太大,不能大于20M",
"open_default" => "默認方式打開",
"open_ie" => "流覽器打開",
"refresh" => "刷新",
"refresh_all" => "強制刷新",
"newfile" => "新建檔",
"newfolder" => "新建檔夾",
"newothers" => "新建其他",
"path_loading" => "載入中...",
"go" => "走著!",
"go_up" => "上層",
"history_next" => "前進",
"history_back" => "後退",
"address_in_edit" => "點擊進入編輯狀態",
"double_click_rename" => "雙擊名稱重命名",
"double_click_open" => "雙擊打開",
"path_null" => "該檔夾為空,可以拖拽檔到該窗口上傳。",
//上傳下載
"upload" => "上傳",
"upload_ready" => "等待上傳...",
"uploading" => "上傳中...",
"upload_success" => "上傳成功",
"upload_path_current" => "切換到當前目錄",
"upload_select" => "選擇檔",
"upload_max_size" => "最大允許",
"upload_size_info" => "如果想配置更大請修改php.ini中允許上傳的最大值。選擇檔時,大於該配置的將自動過濾掉。",
"upload_error" => "上傳失敗",
"upload_muti" => "多檔上傳",
"upload_drag" => "拖拽上傳",
"upload_drag_tips" => "鬆開即可上傳!",
"path_not_allow" => "檔案名不允許出現",
"download" => "下載",
"download_address" => "下載地址",
"download_ready" => "即將下載",
"download_success" => "下載成功!",
"download_error" => "下载失败!",
"download_error_create" => "寫入出錯!",
"download_error_exists" => "遠程檔不存!",
"upload_error_null" => "沒有檔!",
"upload_error_big" => "檔大小超過伺服器限制",
"upload_error_move" => "移動檔失敗!",
"upload_error_exists" => "該檔已存在",
"upload_local" => "本地上傳",
"download_from_server" => "遠程下載",
"save_path" => "保存路徑",
"upload_select_muti" => "可選擇多個檔上傳",
//搜索
"search" => "搜索",
"searching" => "搜索中...",
"search_null" => "沒有搜索結果!",
"search_uplow" => "區分大小寫",
"search_content" => "搜索檔內容",
"search_info" => "請輸入搜索詞和路徑進行搜索!",
"search_ext_tips" => "用|隔開;例如 php|js|css<br/>不填則搜索默認文本檔",
"file_type" => "檔類型",
"goto" => "跳轉到",
"contain" => "包含",
"server_dwonload_desc" => "個任務加入到下載列表",
"parent_permission" => "父目錄許可權",
"root_path" => "我的文件",
"lib" => "",
"fav" => "收藏夾",
"desktop" => "桌面",
"browser" => "流覽器",
"my_cumputer" => "我的電腦",
"recycle" => "回收站",
"my_document" => "我的文檔",
"my_picture" => "我的照片",
"my_music" => "我的音樂",
"my_movie" => "我的視頻",
"my_download" => "我的下載",
//介面
"ui_desktop" => "桌面",
"ui_filemanage" => "檔管理",
"ui_editor" => "編輯器",
"adminer" => "adminer",
"ui_project_home" => "專案主頁",
"ui_login" => "登陸",
"ui_logout" => "退出",
//設置
"setting" => "系統設置",
"setting_title" => "選項",
"setting_user" => "个人中心",
"setting_password" => "修改密碼",
"setting_password_old" => "原密碼",
"setting_password_new" => "修改為",
"setting_language" => "語言設置",
"setting_member" => "用戶管理",
"setting_group" => "用戶組管理",
"setting_group_add" => "添加用戶組",
"setting_group_edit" => "編輯用戶組",
"setting_theme" => "主題切換",
"setting_wall" => "更換壁紙",
"setting_wall_diy" => "自定義壁紙:",
"setting_wall_info" => "圖片url地址本地圖片可以右鍵圖片流覽器打開即可得到",
"setting_fav" => "收藏夾管理",
"setting_player" => "播放器",
"setting_player_music" => "音樂播放器設置",
"setting_player_movie" => "視頻播放器設置",
"setting_help" => "使用幫助",
"setting_about" => "關於作品",
"setting_success" => "修改已生效!",
"can_not_repeat" => "不允許重複",
"absolute_path" => "絕對地址",
// setting page
"group" => "用戶組",
"data_not_full" => "數據提交不完整!",
"default_user_can_not_do" => "默認用戶不能操作",
"default_group_can_not_do" => "默認用戶組不能操作",
"username_can_not_null" => "用戶名不能為空!",
"groupname_can_not_null" => "用戶組名不能為空!",
"groupdesc_can_not_null" => "用戶組描述不能為空!",
"group_move_user_error" => "所屬用戶組用戶移動失敗",
"group_already_remove" => "該用戶組已被刪除",
"group_not_exists" => "該用戶組不存在",
"member_add" => "添加用戶",
"password_null_not_update" => "密碼不填表示不更改",
"if_save_file" => "檔尚未保存,是否保存?",
"if_remove" => "確認刪除",
"member_remove_tips" => "刪除後該用戶目錄會被清空",
"group_remove_tips" => "刪除後該用戶組用戶無法登陸<br/>(需要重新設置用戶組)",
"group_name" => "用戶組名",
"group_name_tips" => "建議英文名,不能重複",
"group_desc" => "展示名稱",
"group_desc_tips" => "組名描述",
"group_role_ext" => "擴展名限制",
"group_role_ext_tips" => "多個用|分隔開",
"group_role_file" => "檔管理",
"group_role_upload" => "上傳下載",
"group_role_user" => "用戶數據",
"group_role_group" => "用戶組管理",
"group_role_member" => "用戶管理",
"group_role_mkfile" => "新建檔",
"group_role_mkdir" => "新建檔夾",
"group_role_pathrname" => "重命名",
"group_role_pathdelete" => "檔(夾)刪除",
"group_role_pathinfo" => "檔(夾)屬性",
"group_role_pathmove" => "移動(複製/剪切/粘貼/拖拽操作)",
"group_role_zip" => "zip壓縮",
"group_role_unzip" => "zip解壓",
"group_role_search" => "搜索",
"group_role_filesave" => "編輯保存檔",
"group_role_can_upload" => "上傳下載",
"group_role_upload" => "允許上傳",
"group_role_download" => "遠程下載",
"group_role_passowrd" => "修改密碼",
"group_role_config" => "用戶配置",
"group_role_fav" => "收藏夾操作(添加/編輯/刪除)",
"group_role_list" => "列表查看",
"group_role_member_add" => "添加用戶",
"group_role_member_edit" => "編輯用戶",
"group_role_member_del" => "刪除用戶",
"group_role_group_add" => "添加用戶組",
"group_role_group_edit" => "編輯用戶組",
"group_role_group_del" => "刪除用戶組",
"group_role_ext_warning" => "不允許此類檔的上傳,<br/>重命名(重命名為指定擴展名),<br/>編輯保存,遠程下載,解壓",
"group_tips"=>"<li>1.用戶組名不能重複,修改組名後原屬於改組用戶會自動關聯</li><li>2.擴展名限制關係系統安全性,請務必謹慎操作<i>(果在web目錄下新建php;就意味著改程式的許可權對此用戶形同虛設)</i></li><li>3.戶管理、許可權組管理;查看許可權和增刪改許可權是綁定的;程式會自動關聯</li><li>4.設定許可權組能添加許可權組後,後續許可權是不繼承的<i>(此許可權相當於最高許可權)</i></li>",
//explorer_ajax
"not_null" => "必填項不能為空!",
"picture_can_not_null" => "圖片地址不能為空!",
"rname_success" => "重命名成功!",
"please_inpute_search_words" => "請輸入要搜索的字串",
"remove_success" => "刪除成功!",
"remove_fali" => "刪除失敗!",
"clipboard_null" => "剪貼板為空!",
"create_success" => "新建成功!",
"create_error" => "新建失敗,請檢查目錄許可權!",
"copy_success" => "【複製】—— 覆蓋剪貼板成功!",
"cute_success" => "【剪切】—— 覆蓋剪貼板成功!",
"clipboard_state" => "剪切板狀態:",
"no_permission_write" => "该文件或目录没有写权限",
"copy_not_exists" => "來源不存在",
"current_has_parent" => "目標檔夾是原始檔案夾的子檔夾!",
"past_success" => "<b>粘貼操作完成</b>",
"cute_past_success" => "<b>剪切操作完成</b>(原始檔案被刪除,剪貼板清空)",
"zip_success" => "壓縮完成",
"not_zip" => "不是壓縮檔",
"zip_null" => "沒有選擇的檔或目錄",
"unzip_success" => "解壓完成",
"gotoline" => "跳轉到行",
"path_is_current" => "所打開路徑和當前路徑一樣!",
"path_exists" => "該名稱已存在!",
//編輯器
"undo" => "撤銷",
"redo" => "反撤銷",
"preview" => "預覽",
"wordwrap" => "自動換行/不自動換行",
"char_all_display" => "顯示&隱藏不可見字元",
"auto_complete" => "自動提示(取消)",
"code_theme" => "代碼風格",
"font_size" => "字體",
//button
"button_ok" => "確定",
"button_submit" => "提交",
"button_set" => "設置",
"button_cancle" => "取消",
"button_edit" => "編輯",
"button_save" => "保存",
"button_save_all" => "保存全部",
"button_not_save" => "不保存",
"button_add" => "添加",
"button_back_add" => "返回添加",
"button_del" => "刪除",
"button_save_edit" => "保存修改",
"button_save_submit" => "保存提交",
"button_select_all" => "全選/反選"
<?php
$L= array(
"upload_clear" =>'清空',
"upload_setting" =>"設置",
"upload_tips" =>'采用分片上傳,不再受php.ini限制;推薦chrome體驗文件夾拖拽上傳',
"upload_exist" =>"同名文件處理",
"upload_exist_rename" =>"重命名",
"upload_exist_replace" =>"覆蓋",
"upload_exist_skip" =>"跳過",
"more" =>"更多",
'system_setting' =>"系統設置",
"openProject" =>"編輯器打開項目",
"url_download" =>"下載地址",
"url_link" =>"外鏈地址",
"app_type_link" =>"快捷方式",
"createLink" =>"創建快捷方式",
"createProject" =>"添加到編輯器工程",
"only_read" =>"只讀",
"only_read_desc" =>"該目錄沒有寫權限<br/>可以在操作系統中設置此目錄的權限",
"explorerNew" =>'kod 鏈接',
'zip_download_ready' =>'壓縮後會自動下載,請稍後...',
"set_background" =>"設置為桌面壁紙",
"share" =>"分享",
"share_title" =>"資源分享",
"share_name" =>"分享標題",
"share_time" =>"到期時間",
"share_time_desc" =>"留空表示不設置到期時間",
"share_password" =>"提取密碼",
"share_password_desc" =>"留空表示不需要密碼",
"share_cancle" =>"取消共享",
"share_create" =>"創建公開鏈接",
"share_url" =>"分享地址",
"share_not_download" =>"禁止下載",
"share_not_download_tips" =>"分享者禁止了下載!",
"share_code_read" =>"代碼閱讀",
"share_save" =>"保存配置",
"share_error_param" =>'參數錯誤!',
"share_error_user" =>'用戶信息錯誤!',
"share_error_sid" =>'分享不存在!',
"share_error_time" =>'您來晚了,該分享已經過期!',
"share_error_path" =>'分享文件不存在,被刪除或者移走了!',
"share_error_password" =>"密碼錯誤!",
'share_error_show_tips' =>"該類型文件暫不支持預覽!",
"share_view_num" =>'瀏覽:',
"share_download_num" =>'下載:',
"my_share" => "我的分享",
"share_edit" => "編輯分享",
"share_remove" => "取消分享",
"share_remove_tips" => "確定取消分享?公開連接將失效.",
"share_open_page" => "打開分享頁面",
"share_open_path" => "進入文件所在目錄",
"recycle_clear" => '清空回收站',
"recycle_clear_success" => "清空回收站成功!",
"recycle_clear_info" => "您確定要徹底刪除回收站嗎?",
"recycle_remove" => "徹底刪除",
"fav_remove" => "取消收藏",
"remove_item" =>"項內容",//刪除3項內容 3 item
"uploading" =>"正在上傳",
'show_file' =>"新頁面預覽",
"unknow_file_title" =>"文件打開提示!",
"unknow_file_tips" =>"暫不支持打開",
"unknow_file_download" =>"下載到本地",
"unknow_file_office" =>"office預覽,此程序需要部署在外網",
//editor
"shortcut" => '快捷鍵',
"learnMore" => '了解更多',
"code_mode" => '高亮語法',
"replace" => '替換',
"selectAll" => '全選',
"reload" => "重新載入",
"about" => "關於",
'complete_current' => "自動補全當前",
"view" => '視圖',
"tools" => "工具",
"help" => "幫助",
"not_exists" => "不存在",
"group_role_fileDownload" => "文件下載",
"group_role_share" => "共享",
"system_setting" => "系統設置",
"system_setting_menu" => "菜單管理",
"system_name" => "程序名稱",
"system_name_desc" => "程序logo標題",
"system_desc" => "程序描述",
"system_desc" => "程序描述",
"path_hidden" => "目錄排除",
"path_hidden_desc" => "默認不顯示的目錄和文件,逗號隔開",
"new_user_folder" => "新用戶默認創建目錄",
"new_user_folder_desc" => "用逗號隔開",
"new_user_app" =>"新用戶默認創建app",
"new_user_app_desc" =>"應用中心的應用,多個用逗號隔開",
"auto_login" =>"遊客自動登錄",
"auto_login_desc" =>"默認登錄用戶名為<code>guest</code>的用戶;開啟後確保<code>guest</code>用戶存在",
"first_in" =>"登陸後默認進入",
"menu_name" =>"菜單名",
"menu_hidden" => "隱藏",
"menu_show" =>"顯示",
"menu_move_down" =>"下移",
"menu_move_up" =>"上移",
"menu_move_del" =>"刪除",
"menu_open_window" =>"新窗口打開",
"url_path" =>"url地址",
"url_path_desc" =>"url地址或js代碼",
"no_permission_read" =>"該文件沒有讀取權限",
"php_env_check" => "運行環境監測:",
"php_env_error" => "環境錯誤:",
"php_env_error_ignore" =>"忽略",
"php_env_error_version" =>"PHP版本不能低於5.0",
"php_env_error_iconv" =>"未開啟 iconv",
"php_env_error_mb_string" =>"未開啟 mb_string",
"php_env_error_file" =>"未開啟 file_get_contents",
"php_env_error_path" =>"不可寫",
"php_env_error_gd" =>"須開啟php GD庫, 否則驗證碼、縮略圖使用將不正常",
"install_login" =>"您可以用如下賬號登陸",
"install_enter" =>"進入系統",
"install_user_default" =>"管理員admin/admin(請務必修改密碼)<br/>普通用戶demo/demo<br/>遊客用戶guest/guest",
"copyright_desc" =>"這是壹款備受好評的web文檔管理系統妳可以用它來做內部文檔管理或分享、也可以用來管理服務器上的網站取代Ftp
甚至可以當作webIDE直接在線開發。同時妳也可以將此程序二次開發整合到妳現有的系統。",
'copyright_contact' =>'授權或定制請聯系QQ:<a href="http://wpa.qq.com/msgrd?v=3&uin=3232048103&site=qq&menu=yes" target="_blank">3232048103</a><a href="javascript:core.openIE(\'http://kalcaddle.com/qa.html\');">問題反饋</a>',
"copyright_info" =>'Copyright © <a href="http://kalcaddle.com/" target="_blank">kalcaddle.com</a> All rights reserved.',
"copyright_pre" =>'Powered by KodExplorer',
"kod_name" => "KodExplorer",
"kod_name_desc" => "芒果雲•資源管理器",
"kod_power_by" => " - Powered by KodExplorer",
"login" => "登六",
"guest_login" => "遊客登六",
"username" => "用護名",
"password" => "密碼",
"login_code" => "驗證碼",
"login_rember_password" => "記住密碼",
"us" => "千帆網路工作室",
"login_not_null" => "用護名密碼不能為空!",
"code_error" => "驗證碼錯誤",
"user_not_exists" => "用護名不存在!",
"password_error" => "密碼錯誤!",
"password_not_null" => "密碼不能為空!",
"old_password_error" => "原密碼錯誤!",
"permission" => "許可權!",
"permission_edit" => "修改權限",
"no_permission" => "您沒有此權限!",
"no_permission_ext" => "您沒有該類型文件權限",
"dialog_min" => "最小化",
"dialog_min_all" => "最小化所有",
"dialog_display_all" => "顯示所有窗口",
"dialog_close_all" => "關閉所有窗口",
//通用
"open" => "打開",
"others" => "其他",
"open_with" => "打開方式",
"close" => "關閉",
"close_all" => "關閉全部",
"close_right" => "關閉右側標籤",
"close_others" => "關閉其他",
"loading" => "操作中...",
"warning" => "警告",
"getting" => "獲取中...",
"sending" => "數據發送中...",
"data_error" => "數據出錯!",
"get_success" => "獲取成功!",
"save_success" => "保存成功!",
"success" => "操作成功",
"error" => "操作失敗",
"error_repeat" => "'操作失敗,請註意名稱不能重複!'",
"system_error" => "系統錯誤",
"name" => "名稱",
"type" => "類型",
"contain" => "包含",
"address" => "位置",
"size" => "大小",
"byte" => "位元組",
"path" => "路徑",
"action" => "操作",
"create_time" => "創建時間",
"modify_time" => "修改時間",
"last_time" => "最後訪問",
"sort_type" => "排序方式",
"time_type" => "Y/m/d H:i:s",
"time_type_info" => "Y年m月d日 H:i:s",
"public_path" => "公共目錄",
//右鍵
"file" => "",
"folder" => "檔夾",
"copy" => "複製",
"clone" => "創建副本",
"past" => "粘貼",
"cute" => "剪切",
"remove" => "刪除",
"info" => "屬性",
"list_type" => "查看",
"list_icon" => "圖示排列",
"list_list" => "列表排列",
"sort_up" => "遞增",
"sort_down" => "遞減",
"order_type" => "排序方式",
"order_desc" => "降序",
"order_asc" => "昇冪",
"rename" => "重命名",
"add_to_fav" => "添加到收藏夾",
"search_in_path" => "檔夾中搜索",
"add_to_play" => "添加到播放列表",
"manage_fav" => "管理收藏夾",
"refresh_tree" => "刷新樹目錄",
"manage_folder" => "管理目錄",
"close_menu" => "關閉菜單",
"zip" => "zip壓縮",
"unzip" => "zip解壓到當前",
"clipboard" => "查看剪貼板",
"full_screen" => "全屏/退出全屏",
"tips" => "提示",
"ziping" => "正在壓縮...",
"unziping" => "正在解壓...",
"moving" => "移動操作中...",
"remove_title" => "刪除確認",
"remove_info" => "確認刪除選中內容嗎?",
"name_isexists" => "出錯了,該名稱已存在!",
"install" => '安裝',
"width" => '寬',
"height" => '高',
"app" => '應用',
"app_store" => '應用商店',
"app_create" => '創建應用',
"app_edit" => '修改應用',
"app_group_all" => '全部',
"app_group_game" => '遊戲',
"app_group_tools" => '工具',
"app_group_reader" => '閱讀',
"app_group_movie" => '影視',
"app_group_music" => '音樂',
"app_group_life" => '生活',
"app_group_others" => '其他',
"app_desc" => '描述',
"app_icon" => '應用圖示',
"app_icon_show" => 'url地址或該目錄',
"app_group" => '應用分組',
"app_type" => '類型',
"app_type_url" => '鏈接',
"app_type_code" => 'js擴展',
"app_display" => '外觀',
"app_display_border" => '無邊框(選中即無邊框)',
"app_display_size" => '調整大小(選中即可調整)',
"app_size" => '尺寸',
"app_url" => '鏈接地址',
"app_code" => 'js 代碼',
//檔管理
"edit" => "編輯",
"edit_can_not" => "不是文本檔",
"edit_too_big" => "文件太大,不能大於20M",
"open_default" => "默認方式打開",
"open_ie" => "流覽器打開",
"refresh" => "刷新",
"refresh_all" => "強制刷新",
"newfile" => "新建檔",
"newfolder" => "新建檔夾",
"newothers" => "新建其他",
"path_loading" => "載入中...",
"go" => "走著!",
"go_up" => "上層",
"history_next" => "前進",
"history_back" => "後退",
"address_in_edit" => "點擊進入編輯狀態",
"double_click_rename" => "雙擊名稱重命名",
"double_click_open" => "雙擊打開",
"path_null" => "該檔夾為空,可以拖拽檔到該窗口上傳。",
//上傳下載
"upload" => "上傳",
"upload_ready" => "等待上傳...",
"uploading" => "上傳中...",
"upload_success" => "上傳成功",
"upload_path_current" => "切換到當前目錄",
"upload_select" => "選擇檔",
"upload_max_size" => "最大允許",
"upload_size_info" => "如果想配置更大請修改php.ini中允許上傳的最大值。選擇檔時,大於該配置的將自動過濾掉。",
"upload_error" => "上傳失敗",
"upload_muti" => "多檔上傳",
"upload_drag" => "拖拽上傳",
"upload_drag_tips" => "鬆開即可上傳!",
"path_not_allow" => "檔案名不允許出現",
"download" => "下載",
"download_address" => "下載地址",
"download_ready" => "即將下載",
"download_success" => "下載成功!",
"download_error" => "下載失敗!",
"download_error_create" => "寫入出錯!",
"download_error_exists" => "遠程檔不存!",
"upload_error_null" => "沒有檔!",
"upload_error_big" => "檔大小超過伺服器限制",
"upload_error_move" => "移動檔失敗!",
"upload_error_exists" => "該檔已存在",
"upload_local" => "本地上傳",
"download_from_server" => "遠程下載",
"save_path" => "保存路徑",
"upload_select_muti" => "可選擇多個檔上傳",
//搜索
"search" => "搜索",
"searching" => "搜索中...",
"search_null" => "沒有搜索結果!",
"search_uplow" => "區分大小寫",
"search_content" => "搜索檔內容",
"search_info" => "請輸入搜索詞和路徑進行搜索!",
"search_ext_tips" => "用|隔開;例如 php|js|css<br/>不填則搜索默認文本檔",
"file_type" => "檔類型",
"goto" => "跳轉到",
"contain" => "包含",
"server_dwonload_desc" => "個任務加入到下載列表",
"parent_permission" => "父目錄許可權",
"root_path" => "我的文件",
"lib" => "",
"fav" => "收藏夾",
"desktop" => "桌面",
"browser" => "流覽器",
"my_cumputer" => "我的電腦",
"recycle" => "回收站",
"my_document" => "我的文檔",
"my_picture" => "我的照片",
"my_music" => "我的音樂",
"my_movie" => "我的視頻",
"my_download" => "我的下載",
//介面
"ui_desktop" => "桌面",
"ui_explorer" => "檔管理",
"ui_editor" => "編輯器",
"adminer" => "adminer",
"ui_project_home" => "專案主頁",
"ui_login" => "登六",
"ui_logout" => "退出",
//設置
"setting" => "系統設置",
"setting_title" => "選項",
"setting_user" => "個人中心",
"setting_password" => "修改密碼",
"setting_password_old" => "原密碼",
"setting_password_new" => "修改為",
"setting_language" => "語言設置",
"setting_member" => "用護管理",
"setting_group" => "用護組管理",
"setting_group_add" => "添加用護組",
"setting_group_edit" => "編輯用護組",
"setting_theme" => "主題切換",
"setting_wall" => "更換壁紙",
"setting_wall_diy" => "自定義壁紙:",
"setting_wall_info" => "圖片url地址本地圖片可以右鍵圖片流覽器打開即可得到",
"setting_fav" => "收藏夾管理",
"setting_player" => "播放器",
"setting_player_music" => "音樂播放器設置",
"setting_player_movie" => "視頻播放器設置",
"setting_help" => "使用幫助",
"setting_about" => "關於作品",
"setting_success" => "修改已生效!",
"can_not_repeat" => "不允許重複",
"absolute_path" => "絕對地址",
// setting page
"group" => "用護組",
"data_not_full" => "數據提交不完整!",
"default_user_can_not_do" => "默認用護不能操作",
"default_group_can_not_do" => "默認用護組不能操作",
"username_can_not_null" => "用護名不能為空!",
"groupname_can_not_null" => "用護組名不能為空!",
"groupdesc_can_not_null" => "用護組描述不能為空!",
"group_move_user_error" => "所屬用護組用護移動失敗",
"group_already_remove" => "該用護組已被刪除",
"group_not_exists" => "該用護組不存在",
"member_add" => "添加用護",
"password_null_not_update" => "密碼不填表示不更改",
"if_save_file" => "檔尚未保存,是否保存?",
"if_remove" => "確認刪除",
"member_remove_tips" => "刪除後該用護目錄會被清空",
"group_remove_tips" => "刪除後該用護組用護無法登六<br/>(需要重新設置用護組)",
"group_name" => "用護組名",
"group_name_tips" => "建議英文名,不能重複",
"group_desc" => "展示名稱",
"group_desc_tips" => "組名描述",
"group_role_ext" => "擴展名限制",
"group_role_ext_tips" => "多個用|分隔開",
"group_role_file" => "檔管理",
"group_role_upload" => "上傳下載",
"group_role_user" => "用護數據",
"group_role_group" => "用護組管理",
"group_role_member" => "用護管理",
"group_role_mkfile" => "新建檔",
"group_role_mkdir" => "新建檔夾",
"group_role_pathrname" => "重命名",
"group_role_pathdelete" => "檔(夾)刪除",
"group_role_pathinfo" => "檔(夾)屬性",
"group_role_pathmove" => "移動(複製/剪切/粘貼/拖拽操作)",
"group_role_zip" => "zip壓縮",
"group_role_unzip" => "zip解壓",
"group_role_search" => "搜索",
"group_role_filesave" => "編輯保存檔",
"group_role_can_upload" => "上傳下載",
"group_role_upload" => "允許上傳",
"group_role_download" => "遠程下載",
"group_role_passowrd" => "修改密碼",
"group_role_config" => "用護配置",
"group_role_fav" => "收藏夾操作(添加/編輯/刪除)",
"group_role_list" => "列表查看",
"group_role_member_add" => "添加用護",
"group_role_member_edit" => "編輯用護",
"group_role_member_del" => "刪除用護",
"group_role_group_add" => "添加用護組",
"group_role_group_edit" => "編輯用護組",
"group_role_group_del" => "刪除用護組",
"group_role_ext_warning" => "不允許此類檔的上傳,<br/>重命名(重命名為指定擴展名),<br/>編輯保存,遠程下載,解壓",
"group_tips"=>"<li>1.用護組名不能重複,修改組名後原屬於改組用護會自動關聯</li><li>2.擴展名限制關系系統安全性,請務必謹慎操作<i>(果在web目錄下新建php;就意味著改程式的許可權對此用護形同虛設)</i></li><li>3.護管理、許可權組管理;查看許可權和增刪改許可權是邦定的;程式會自動關聯</li><li>4.設定許可權組能添加許可權組後,後續許可權是不繼承的<i>(此許可權相當於最高許可權)</i></li>",
//explorer_ajax
"not_null" => "必填項不能為空!",
"picture_can_not_null" => "圖片地址不能為空!",
"rname_success" => "重命名成功!",
"please_inpute_search_words" => "請輸入要搜索的字串",
"remove_success" => "刪除成功!",
"remove_fali" => "刪除失敗!",
"clipboard_null" => "剪貼板為空!",
"create_success" => "新建成功!",
"create_error" => "新建失敗,請檢查目錄許可權!",
"copy_success" => "【複製】—— 覆蓋剪貼板成功!",
"cute_success" => "【剪切】—— 覆蓋剪貼板成功!",
"clipboard_state" => "剪切板狀態:",
"no_permission_write" => "該文件或目錄沒有寫權限",
"copy_not_exists" => "來源不存在",
"current_has_parent" => "目標檔夾是原始檔案夾的子檔夾!",
"past_success" => "<b>粘貼操作完成</b>",
"cute_past_success" => "<b>剪切操作完成</b>(原始檔案被刪除,剪貼板清空)",
"zip_success" => "壓縮完成",
"not_zip" => "不是壓縮檔",
"zip_null" => "沒有選擇的檔或目錄",
"unzip_success" => "解壓完成",
"gotoline" => "跳轉到行",
"path_is_current" => "所打開路徑和當前路徑壹洋!",
"path_exists" => "該名稱已存在!",
//編輯器
"undo" => "撤銷",
"redo" => "反撤銷",
"preview" => "預覽",
"wordwrap" => "自動換行/不自動換行",
"char_all_display" => "顯示&隱藏不可見字元",
"auto_complete" => "自動提示(取消)",
"function_list" => "函數列表",
"code_theme" => "代碼風格",
"font_size" => "字體",
//button
"button_ok" => "確定",
"button_submit" => "提交",
"button_set" => "設置",
"button_cancel" => "取消",
"button_edit" => "編輯",
"button_save" => "保存",
"button_save_all" => "保存全部",
"button_not_save" => "不保存",
"button_add" => "添加",
"button_back_add" => "返回添加",
"button_del" => "刪除",
"button_save_edit" => "保存修改",
"button_save_submit" => "保存提交",
"button_select_all" => "全選/反選"
);

View File

2
data/system/apps.php Normal file → Executable file

File diff suppressed because one or more lines are too long

2
data/system/group.php Normal file → Executable file
View File

@ -1 +1 @@
<?php exit;?>{"root":{"role":"root","name":"Administrator","path":"","ext_not_allow":""},"guest":{"role":"guest","name":"guest","ext_not_allow":"php|asp|jsp"},"default":{"role":"default","name":"default","ext_not_allow":"php|asp|jsp","explorer:mkdir":1,"explorer:mkfile":1,"explorer:pathRname":1,"explorer:pathDelete":1,"explorer:zip":1,"explorer:unzip":1,"explorer:pathCopy":1,"explorer:pathCute":1,"explorer:pathCuteDrag":1,"explorer:clipboard":1,"explorer:pathPast":1,"explorer:pathInfo":1,"explorer:serverDownload":1,"explorer:fileUpload":1,"explorer:search":1,"app:user_app":1,"editor:fileSave":1}}
<?php exit;?>{"root":{"role":"root","name":"Administrator","path":"","ext_not_allow":""},"default":{"role":"default","name":"default","ext_not_allow":"php|asp|jsp","explorer:mkdir":1,"explorer:mkfile":1,"explorer:pathRname":1,"explorer:pathDelete":1,"explorer:zip":1,"explorer:unzip":1,"explorer:pathCopy":1,"explorer:pathCute":1,"explorer:pathCuteDrag":1,"explorer:clipboard":1,"explorer:pathPast":1,"explorer:pathInfo":1,"explorer:pathInfoMuti":1,"explorer:serverDownload":1,"explorer:fileUpload":1,"explorer:search":1,"app:user_app":1,"editor:fileSave":1},"guest":{"role":"guest","name":"guest","ext_not_allow":"php|asp|jsp"}}

2
data/system/member.php Normal file → Executable file
View File

@ -1 +1 @@
<?php exit;?>{"admin":{"name":"admin","password":"21232f297a57a5a743894a0e4a801fc3","role":"root","status":1},"guest":{"name":"guest","password":"084e0343a0486ff05530df6c705c8bb4","role":"guest","status":1},"demo":{"name":"demo","password":"fe01ce2a7fbac8fafaed7c982a04e229","role":"default","status":1}}
<?php exit;?>{"admin":{"name":"admin","password":"21232f297a57a5a743894a0e4a801fc3","role":"root","status":0},"guest":{"name":"guest","password":"084e0343a0486ff05530df6c705c8bb4","role":"guest","status":0},"demo":{"name":"demo","password":"fe01ce2a7fbac8fafaed7c982a04e229","role":"default","status":0}}

12
index.php Normal file → Executable file
View File

@ -1,7 +1,7 @@
<?php
include ('./config/config.php');
$app = new Application(); //声明控制器类
$app->setDefaultController('explorer');//设置默认控制器
$app->setDefaultAction('index'); //设置默认控制器函数
$app->run();
<?php
include ('./config/config.php');
$app = new Application();
init_lang();
init_setting();
$app->run();
?>

464
lib/class/fileCache.class.php Normal file → Executable file
View File

@ -1,233 +1,233 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
/**
* 数据的缓存存储类key=>value 模式value可以是任意类型数据。
* 完整流程测试读取最低5000次/s 含有写的1000次/s
* add 添加单条数据已存在则返回false
* reset 重置所有数据;不传参数代表清空数据
* get: 获取数据获取全部获取指定key数据获取指定多个key的数据;查找方式获取多条数据
* 1. get();
* 2. get("demo")
* 3. get(array('demo','admin'))
* 4. get('group','','root')
* update: 更新数据更新指定key数据获取指定多个key的数据; 查找方式更新多条数据
* 1. update("demo",array('name'=>'ddd',...))
* 2. update(array('demo','admin'),array(array('name'...),array('name'...)))
* 3. update('group','system','root')
*
* replace_update($key_old,$key_new,$value_new)替换方式更新满足key更新的需求
*
* delete: 获取数据获取全部获取指定key数据获取指定多个key的数据;查找方式获取多条数据
* 1. delete("demo")
* 2. delete(array('demo','admin'))
* 3. delete('group','','root')
* 例如:====================================
* ['sss':['name':'sss','group':'root'],'bbb':['name':'bbb','group':'root']
* ,'ccc':['name':'ccc','group':'system'],'ddd':['name':'ddd','group':'root']
* 查找方式删除 delete('group','','root');
* 查找方式更新 update('group','system','root');
* 查找方式获取 get('group','','root');
*/
define('CONFIG_EXIT', '<?php exit;?>');
class fileCache
{
private $data;
private $file;
function __construct($file) {
$this->file = $file;
$this->data= self::load($file);
}
/**
* 重置所有数据;不传参数代表清空数据
*/
public function reset($list=array()){
$this->data = $list;
self::save($this->file,$this->data);
}
/**
* 添加一条数据不能重复如果已存在则返回false;1k次/s
*/
public function add($k,$v){
if (!isset($this->data[$k])) {
$this->data[$k] = $v;
self::save($this->file,$this->data);
return true;
}
return false;
}
/**
* 获取数据;不存在则返回false;100w次/s
* $k null 不传则返回全部;
* $k string 为字符串则根据key获取数据只有一条数据
* $search_value 设置时;表示以查找的方式筛选数据筛选条件为 $key=$k 值为$search_value的数据多条
*/
public function get($k = '',$v='',$search_value=false){
if ($k === '') return $this->data;
$search = array();
if ($search_value === false) {
if (is_array($k)) {
//多条数据获取
$num = count($k);
for ($i=0; $i < $num; $i++) {
$search[$k[$i]] = $this->data[$k[$i]];
}
return $search;
}else if(isset($this->data[$k])){
//单条数据获取
return $this->data[$k];
}
}else{
//查找内容数据方式获取;返回多条
foreach ($this->data as $key => $val) {
if ($val[$k] == $search_value) {
$search[$key] = $this->data[$key];
}
}
return $search;
}
return false;
}
/**
* 更新数据;不存在;或者任意一条不存在则返回false;不进行保存
* $k $v string 为字符串则根据key只更新一条数据
* $k $v array array($key1,$key2,...),array($value1,$value2,...)
* 则表示更新多条数据
* $search_value 设置时;表示以查找的方式更新数据中的数据
*/
public function update($k,$v,$search_value=false){
if ($search_value === false) {
if (is_array($k)) {
//多条数据更新
$num = count($k);
for ($i=0; $i < $num; $i++) {
$this->data[$k[$i]] = $v[$i];
}
self::save($this->file,$this->data);
return true;
}else if(isset($this->data[$k])){
//单条数据更新
$this->data[$k] = $v;
self::save($this->file,$this->data);
return true;
}
}else{
//查找方式更新;更新多条
foreach ($this->data as $key => $val) {
if ($val[$k] == $search_value) {
$this->data[$key][$k] = $v;
}
}
self::save($this->file,$this->data);
return true;
}
return false;
}
/*
* 替换方式更新满足key更新的需求
*/
public function replace_update($key_old,$key_new,$value_new){
if(isset($this->data[$key_old])){
$value = $this->data[$key_old];
unset($this->data[$key_old]);
$this->data[$key_new] = $value_new;
self::save($this->file,$this->data);
return true;
}
return false;
}
/**
* 删除;不存在返回false
*/
public function delete($k,$v='',$search_value=false){
if ($search_value === false) {
if (is_array($k)) {
//多条数据更新
$num = count($k);
for ($i=0; $i < $num; $i++) {
unset($this->data[$k[$i]]);
}
self::save($this->file,$this->data);
return true;
}else if(isset($this->data[$k])){
//单条数据删除
unset($this->data[$k]);
self::save($this->file,$this->data);
return true;
}
}else{
//查找内容数据方式删除;删除多条
foreach ($this->data as $key => $val) {
if ($val[$k] == $search_value){
unset($this->data[$key]);
}
}
self::save($this->file,$this->data);
return true;
}
return false;
}
//=====================================================
/**
* 排序
*/
public static function arr_sort(&$arr,$key, $type = 'asc'){
$keysvalue = $new_array = array();
foreach ($arr as $k => $v) {
$keysvalue[$k] = $v[$key];
}
if ($type == 'asc') {
asort($keysvalue);
} else {
arsort($keysvalue);
}
reset($keysvalue);
foreach ($keysvalue as $k => $v) {
$new_array[$k] = $arr[$k];
}
return $new_array;
}
/**
* 加载数据;并解析成程序数据
*/
public static function load($file){//10000次需要4s 数据量差异不大。
if (!file_exists($file)) touch($file);
$str = file_get_contents($file);
$str = substr($str, strlen(CONFIG_EXIT));
$data= json_decode($str,true);
if (is_null($data)) $data = array();
return $data;
}
/**
* 保存数据;
*/
public static function save($file,$data){//10000次需要6s
if (!$file) return;
if($fp = fopen($file, "w")){
if (flock($fp, LOCK_EX)) { // 进行排它型锁定
$str = CONFIG_EXIT.json_encode($data);
fwrite($fp, $str);
fflush($fp); // flush output before releasing the lock
flock($fp, LOCK_UN); // 释放锁定
}
fclose($fp);
}
}
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
/**
* 数据的缓存存储类key=>value 模式value可以是任意类型数据。
* 完整流程测试读取最低5000次/s 含有写的1000次/s
* add 添加单条数据已存在则返回false
* reset 重置所有数据;不传参数代表清空数据
* get: 获取数据获取全部获取指定key数据获取指定多个key的数据;查找方式获取多条数据
* 1. get();
* 2. get("demo")
* 3. get(array('demo','admin'))
* 4. get('group','','root')
* update: 更新数据更新指定key数据获取指定多个key的数据; 查找方式更新多条数据
* 1. update("demo",array('name'=>'ddd',...))
* 2. update(array('demo','admin'),array(array('name'...),array('name'...)))
* 3. update('group','system','root')
*
* replace_update($key_old,$key_new,$value_new)替换方式更新满足key更新的需求
*
* delete: 获取数据获取全部获取指定key数据获取指定多个key的数据;查找方式获取多条数据
* 1. delete("demo")
* 2. delete(array('demo','admin'))
* 3. delete('group','','root')
* 例如:====================================
* ['sss':['name':'sss','group':'root'],'bbb':['name':'bbb','group':'root']
* ,'ccc':['name':'ccc','group':'system'],'ddd':['name':'ddd','group':'root']
* 查找方式删除 delete('group','','root');
* 查找方式更新 update('group','system','root');
* 查找方式获取 get('group','','root');
*/
define('CONFIG_EXIT', '<?php exit;?>');
class fileCache
{
private $data;
private $file;
function __construct($file) {
$this->file = $file;
$this->data= self::load($file);
}
/**
* 重置所有数据;不传参数代表清空数据
*/
public function reset($list=array()){
$this->data = $list;
self::save($this->file,$this->data);
}
/**
* 添加一条数据不能重复如果已存在则返回false;1k次/s
*/
public function add($k,$v){
if (!isset($this->data[$k])) {
$this->data[$k] = $v;
self::save($this->file,$this->data);
return true;
}
return false;
}
/**
* 获取数据;不存在则返回false;100w次/s
* $k null 不传则返回全部;
* $k string 为字符串则根据key获取数据只有一条数据
* $search_value 设置时;表示以查找的方式筛选数据筛选条件为 $key=$k 值为$search_value的数据多条
*/
public function get($k = '',$v='',$search_value=false){
if ($k === '') return $this->data;
$search = array();
if ($search_value === false) {
if (is_array($k)) {
//多条数据获取
$num = count($k);
for ($i=0; $i < $num; $i++) {
$search[$k[$i]] = $this->data[$k[$i]];
}
return $search;
}else if(isset($this->data[$k])){
//单条数据获取
return $this->data[$k];
}
}else{
//查找内容数据方式获取;返回多条
foreach ($this->data as $key => $val) {
if ($val[$k] == $search_value) {
$search[$key] = $this->data[$key];
}
}
return $search;
}
return false;
}
/**
* 更新数据;不存在;或者任意一条不存在则返回false;不进行保存
* $k $v string 为字符串则根据key只更新一条数据
* $k $v array array($key1,$key2,...),array($value1,$value2,...)
* 则表示更新多条数据
* $search_value 设置时;表示以查找的方式更新数据中的数据
*/
public function update($k,$v,$search_value=false){
if ($search_value === false) {
if (is_array($k)) {
//多条数据更新
$num = count($k);
for ($i=0; $i < $num; $i++) {
$this->data[$k[$i]] = $v[$i];
}
self::save($this->file,$this->data);
return true;
}else if(isset($this->data[$k])){
//单条数据更新
$this->data[$k] = $v;
self::save($this->file,$this->data);
return true;
}
}else{
//查找方式更新;更新多条
foreach ($this->data as $key => $val) {
if ($val[$k] == $search_value) {
$this->data[$key][$k] = $v;
}
}
self::save($this->file,$this->data);
return true;
}
return false;
}
/*
* 替换方式更新满足key更新的需求
*/
public function replace_update($key_old,$key_new,$value_new){
if(isset($this->data[$key_old])){
$value = $this->data[$key_old];
unset($this->data[$key_old]);
$this->data[$key_new] = $value_new;
self::save($this->file,$this->data);
return true;
}
return false;
}
/**
* 删除;不存在返回false
*/
public function delete($k,$v='',$search_value=false){
if ($search_value === false) {
if (is_array($k)) {
//多条数据更新
$num = count($k);
for ($i=0; $i < $num; $i++) {
unset($this->data[$k[$i]]);
}
self::save($this->file,$this->data);
return true;
}else if(isset($this->data[$k])){
//单条数据删除
unset($this->data[$k]);
self::save($this->file,$this->data);
return true;
}
}else{
//查找内容数据方式删除;删除多条
foreach ($this->data as $key => $val) {
if ($val[$k] == $search_value){
unset($this->data[$key]);
}
}
self::save($this->file,$this->data);
return true;
}
return false;
}
//=====================================================
/**
* 排序
*/
public static function arr_sort(&$arr,$key, $type = 'asc'){
$keysvalue = $new_array = array();
foreach ($arr as $k => $v) {
$keysvalue[$k] = $v[$key];
}
if ($type == 'asc') {
asort($keysvalue);
} else {
arsort($keysvalue);
}
reset($keysvalue);
foreach ($keysvalue as $k => $v) {
$new_array[$k] = $arr[$k];
}
return $new_array;
}
/**
* 加载数据;并解析成程序数据
*/
public static function load($file){//10000次需要4s 数据量差异不大。
if (!file_exists($file)) touch($file);
$str = file_get_contents($file);
$str = substr($str, strlen(CONFIG_EXIT));
$data= json_decode($str,true);
if (is_null($data)) $data = array();
return $data;
}
/**
* 保存数据;
*/
public static function save($file,$data){//10000次需要6s
if (!$file) return;
if($fp = fopen($file, "w")){
if (flock($fp, LOCK_EX)) { // 进行排它型锁定
$str = CONFIG_EXIT.json_encode($data);
fwrite($fp, $str);
fflush($fp); // flush output before releasing the lock
flock($fp, LOCK_UN); // 释放锁定
}
fclose($fp);
}
}
}

324
lib/class/history.class.php Normal file → Executable file
View File

@ -1,162 +1,162 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
/**
* 历史记录操作类
* 传入或者构造一个数组。形如:
* array(
* 'history_num'=>20, //队列节点总共个数
* 'first'=>0, //起始位置,从0开始。数组索引值
* 'last'=>0, //终点位置从0开始。
* 'back'=>0, //从first位置倒退了多少步差值。
* 'history'=>array( //数组,存放操作队列。
* array('path'=>'D:/'),
* array('path'=>'D:/www/'),
* array('path'=>'E:/'),
* array('path'=>'/home/')
* ……
* )
* )
*/
class history{
var $history_num;
var $first;
var $last;
var $back;
var $history=array();
function __construct($array=array(),$num=20){
if (!$array) {//数组为空.构造一个循环队列。
$history=array();
for ($i=0; $i < $num; $i++) {
array_push($history,array('path'=>''));
}
$array=array(
'history_num'=>$num,
'first'=>0,//起始位置
'last'=>0,//终点位置
'back'=>0,
'history'=>$history
);
}
$this->history_num=$array['history_num'];
$this->first=$array['first'];
$this->last=$array['last'];
$this->back=$array['back'];
$this->history=$array['history'];
}
function nextNum($i,$n=1){//环路下n一个值。和时钟环路类似。
return ($i+$n)<$this->history_num ? ($i+$n):($i+$n-$this->history_num);
}
function prevNum($i,$n=1){//环路上一个值i。回退N个位置。
return ($i-$n)>=0 ? ($i-$n) : ($i-$n+$this->history_num);
}
function minus($i,$j){//顺时针两点只差,i-j
return ($i > $j) ? ($i - $j):($i-$j+$this->history_num);
}
function getHistory(){//返回数组,用于保存或者序列化操作。
return array(
'history_num'=> $this->history_num,
'first' => $this->first,
'last' => $this->last,
'back' => $this->back,
'history' => $this->history
);
}
function add($path){
if ($path==$this->history[$this->first]['path']) {//和最后相同,则不记录
return 0;
}
if ($this->back!=0) {//有后退操作记录的情况下,进行插入。
$this->goedit($path);
return;
}
if ($this->history[0]['path']=='') {//刚构造,不用加一.首位不前移
$this->history[$this->first]['path']=$path;
return;
}else{
$this->first=$this->nextNum($this->first);//首位前移
$this->history[$this->first]['path']=$path;
}
if ($this->first==$this->last) {//起始位置与终止位置相遇
$this->last=$this->nextNum($this->last);//末尾位置前移。
}
}
function goback(){//返回从first后退N步的地址。
$this->back+=1;
//最大后退步数为起点到终点之差(顺时针之差)
$mins=$this->minus($this->first,$this->last);
if ($this->back >= $mins) {//退到最后点
$this->back=$mins;
}
$pos=$this->prevNum($this->first,$this->back);
return $this->history[$pos]['path'];
}
function gonext(){//从first后退N步的地方前进一步。
$this->back-=1;
if ($this->back<0) {//退到最后点
$this->back=0;
}
return $this->history[$this->prevNum($this->first,$this->back)]['path'];
}
function goedit($path){//后退到某个点没有前进而是修改。则firs值为最后的值。
$pos=$this->minus($this->first,$this->back);
$pos=$this->nextNum($pos);//下一个
$this->history[$pos]['path']=$path;
$this->first=$pos;
$this->back=0;
}
//是否可以后退
function isback(){
if ($this->back==0 && $this->first==0 && $this->last==0) {
return 0;
}
if ($this->back < $this->minus($this->first,$this->last)) {
return 1;
}
return 0;
}
//是否可以前进
function isnext(){
if ($this->back>0) {
return 1;
}
return 0;
}
//取出最新纪录
function getFirst(){
return $this->history[$this->first]['path'];
}
}
//include 'common.function.php';
//$hi=new history(array(),6);//传入空数组,则初始化数组构造。
//for ($i=0; $i <8; $i++) {
// $hi->add('s'.$i);
//}
//pr($hi->goback());
//pr($hi->gonext());
//$hi->add('asdfasdf2');
//pr($hi->getHistory());
//$ss=new history($hi->getHistory());//直接用数组构造。
//$ss->add('asdfasdf');
//$ss->goback();
//pr($ss->getHistory());
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*/
/**
* 历史记录操作类
* 传入或者构造一个数组。形如:
* array(
* 'history_num'=>20, //队列节点总共个数
* 'first'=>0, //起始位置,从0开始。数组索引值
* 'last'=>0, //终点位置从0开始。
* 'back'=>0, //从first位置倒退了多少步差值。
* 'history'=>array( //数组,存放操作队列。
* array('path'=>'D:/'),
* array('path'=>'D:/www/'),
* array('path'=>'E:/'),
* array('path'=>'/home/')
* ……
* )
* )
*/
class history{
var $history_num;
var $first;
var $last;
var $back;
var $history=array();
function __construct($array=array(),$num=20){
if (!$array) {//数组为空.构造一个循环队列。
$history=array();
for ($i=0; $i < $num; $i++) {
array_push($history,array('path'=>''));
}
$array=array(
'history_num'=>$num,
'first'=>0,//起始位置
'last'=>0,//终点位置
'back'=>0,
'history'=>$history
);
}
$this->history_num=$array['history_num'];
$this->first=$array['first'];
$this->last=$array['last'];
$this->back=$array['back'];
$this->history=$array['history'];
}
function nextNum($i,$n=1){//环路下n一个值。和时钟环路类似。
return ($i+$n)<$this->history_num ? ($i+$n):($i+$n-$this->history_num);
}
function prevNum($i,$n=1){//环路上一个值i。回退N个位置。
return ($i-$n)>=0 ? ($i-$n) : ($i-$n+$this->history_num);
}
function minus($i,$j){//顺时针两点只差,i-j
return ($i > $j) ? ($i - $j):($i-$j+$this->history_num);
}
function getHistory(){//返回数组,用于保存或者序列化操作。
return array(
'history_num'=> $this->history_num,
'first' => $this->first,
'last' => $this->last,
'back' => $this->back,
'history' => $this->history
);
}
function add($path){
if ($path==$this->history[$this->first]['path']) {//和最后相同,则不记录
return 0;
}
if ($this->back!=0) {//有后退操作记录的情况下,进行插入。
$this->goedit($path);
return;
}
if ($this->history[0]['path']=='') {//刚构造,不用加一.首位不前移
$this->history[$this->first]['path']=$path;
return;
}else{
$this->first=$this->nextNum($this->first);//首位前移
$this->history[$this->first]['path']=$path;
}
if ($this->first==$this->last) {//起始位置与终止位置相遇
$this->last=$this->nextNum($this->last);//末尾位置前移。
}
}
function goback(){//返回从first后退N步的地址。
$this->back+=1;
//最大后退步数为起点到终点之差(顺时针之差)
$mins=$this->minus($this->first,$this->last);
if ($this->back >= $mins) {//退到最后点
$this->back=$mins;
}
$pos=$this->prevNum($this->first,$this->back);
return $this->history[$pos]['path'];
}
function gonext(){//从first后退N步的地方前进一步。
$this->back-=1;
if ($this->back<0) {//退到最后点
$this->back=0;
}
return $this->history[$this->prevNum($this->first,$this->back)]['path'];
}
function goedit($path){//后退到某个点没有前进而是修改。则firs值为最后的值。
$pos=$this->minus($this->first,$this->back);
$pos=$this->nextNum($pos);//下一个
$this->history[$pos]['path']=$path;
$this->first=$pos;
$this->back=0;
}
//是否可以后退
function isback(){
if ($this->back==0 && $this->first==0 && $this->last==0) {
return 0;
}
if ($this->back < $this->minus($this->first,$this->last)) {
return 1;
}
return 0;
}
//是否可以前进
function isnext(){
if ($this->back>0) {
return 1;
}
return 0;
}
//取出最新纪录
function getFirst(){
return $this->history[$this->first]['path'];
}
}
//include 'common.function.php';
//$hi=new history(array(),6);//传入空数组,则初始化数组构造。
//for ($i=0; $i <8; $i++) {
// $hi->add('s'.$i);
//}
//pr($hi->goback());
//pr($hi->gonext());
//$hi->add('asdfasdf2');
//pr($hi->getHistory());
//$ss=new history($hi->getHistory());//直接用数组构造。
//$ss->add('asdfasdf');
//$ss->goback();
//pr($ss->getHistory());

0
lib/class/imageThumb.class.php Normal file → Executable file
View File

File diff suppressed because it is too large Load Diff

121
lib/class/mcrypt.class.php Executable file
View File

@ -0,0 +1,121 @@
<?php
/*
* @link http://www.kalcaddle.com/
* @author warlee | e-mail:kalcaddle@qq.com
* @copyright warlee 2014.(Shanghai)Co.,Ltd
* @license http://kalcaddle.com/tools/licenses/license.txt
*------
* 字符串加解密类;
* 一次一密;且定时解密有效
* 可用于加密&动态key生成
* demo
* 加密echo Mcrypt::encode('abc','123');
* 解密echo Mcrypt::decode('9f843I0crjv5y0dWE_-uwzL_mZRyRb1ynjGK4I_IACQ','123');
*/
class Mcrypt{
public $default_key = 'a!takA:dlmcldEv,e';
/**
* 字符加解密,一次一密,可定时解密有效
*
* @param string $string 原文或者密文
* @param string $operation 操作(encode | decode)
* @param string $key 密钥
* @param int $expiry 密文有效期,单位s,0 为永久有效
* @return string 处理后的 原文或者 经过 base64_encode 处理后的密文
*/
public function encode($string,$key = '', $expiry = 3600){
$ckey_length = 4;
$key = md5($key ? $key : $this->default_key); //解密密匙
$keya = md5(substr($key, 0, 16)); //做数据完整性验证
$keyb = md5(substr($key, 16, 16)); //用于变化生成的密文 (初始化向量IV)
$keyc = substr(md5(microtime()), - $ckey_length);
$cryptkey = $keya . md5($keya . $keyc);
$key_length = strlen($cryptkey);
$string = sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string . $keyb), 0, 16) . $string;
$string_length = strlen($string);
$rndkey = array();
for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
}
$box = range(0, 255);
// 打乱密匙簿,增加随机性
for($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
// 加解密,从密匙簿得出密匙进行异或,再转成字符
$result = '';
for($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
$result = $keyc . str_replace('=', '', base64_encode($result));
$result = str_replace(array('+', '/', '='),array('-', '_', '.'), $result);
return $result;
}
/**
* 字符加解密,一次一密,可定时解密有效
*
* @param string $string 原文或者密文
* @param string $operation 操作(encode | decode)
* @param string $key 密钥
* @param int $expiry 密文有效期,单位s,0 为永久有效
* @return string 处理后的 原文或者 经过 base64_encode 处理后的密文
*/
public function decode($string,$key = '')
{
$string = str_replace(array('-', '_', '.'),array('+', '/', '='), $string);
$ckey_length = 4;
$key = md5($key ? $key : $this->default_key); //解密密匙
$keya = md5(substr($key, 0, 16)); //做数据完整性验证
$keyb = md5(substr($key, 16, 16)); //用于变化生成的密文 (初始化向量IV)
$keyc = substr($string, 0, $ckey_length);
$cryptkey = $keya . md5($keya . $keyc);
$key_length = strlen($cryptkey);
$string = base64_decode(substr($string, $ckey_length));
$string_length = strlen($string);
$result = '';
$box = range(0, 255);
$rndkey = array();
for($i = 0; $i <= 255; $i++) {
$rndkey[$i] = ord($cryptkey[$i % $key_length]);
}
// 打乱密匙簿,增加随机性
for($j = $i = 0; $i < 256; $i++) {
$j = ($j + $box[$i] + $rndkey[$i]) % 256;
$tmp = $box[$i];
$box[$i] = $box[$j];
$box[$j] = $tmp;
}
// 加解密,从密匙簿得出密匙进行异或,再转成字符
for($a = $j = $i = 0; $i < $string_length; $i++) {
$a = ($a + 1) % 256;
$j = ($j + $box[$a]) % 256;
$tmp = $box[$a];
$box[$a] = $box[$j];
$box[$j] = $tmp;
$result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
}
if ((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0)
&& substr($result, 10, 16) == substr(md5(substr($result, 26) . $keyb), 0, 16)
) {
return substr($result, 26);
} else {
return '';
}
}
}

11388
lib/class/pclzip.class.php Normal file → Executable file

File diff suppressed because it is too large Load Diff

3
lib/core/Application.class.php Normal file → Executable file
View File

@ -59,9 +59,10 @@ class Application {
if (!method_exists($instance, $function)) {
pr($function.' method not exists',1);
}
$instance -> $function();
return $instance -> $function();
}
/**
* 运行自动加载的控制器
*/

0
lib/core/Controller.class.php Normal file → Executable file
View File

0
lib/core/Model.class.php Normal file → Executable file
View File

1445
lib/function/common.function.php Normal file → Executable file

File diff suppressed because it is too large Load Diff

1506
lib/function/file.function.php Normal file → Executable file

File diff suppressed because it is too large Load Diff

1123
lib/function/web.function.php Normal file → Executable file

File diff suppressed because it is too large Load Diff

0
lib/index.html Normal file → Executable file
View File

294
lib/plugins/adminer/adminer.css Normal file → Executable file
View File

@ -1,147 +1,147 @@
/* CSS by Brade - www.bradezone.com */
*{margin:0;padding:0}
/* 颜色微调【同样颜色灰度值调节】 */
::-webkit-scrollbar-track-piece{background-color:#f5f5f5;border-left:1px solid #d2d2d2}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background-color:#c2c2c2;background-clip:padding-box;border:1px solid #979797;min-height:28px}
::-webkit-scrollbar-thumb:hover{border:1px solid #636363;background-color:#929292}
body,select,input,button{font:13px "微软雅黑",Microsoft Yahei,STXihei,arial,sans-serif;background:#fff;color:#333}
code,pre,textarea{font: 14px Consolas, "Liberation Mono", Courier, monospace !important;}
/* generic */
a{-ms-transition: all 0.3s;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
-o-transition: all 0.3s;
transition: all 0.3s;
}
a,a:visited{color:#06c;text-decoration:none;padding: 1px 4px;}
a:hover{background:#C7D1DD;border-radius:10px;color:#555;text-decoration: none !important;}
p{padding-bottom:4px;margin-bottom:4px}
h1{font-size:18px;font-weight:bold;padding-bottom:0px;height:25px;padding:0 0 8px 0;color:#666;border:0;background:none;}
h2{font-size:24px;margin:0px;background:transparent;border:0;color:#366ec2;
padding: 10px 0;;border-bottom: 3px solid #eee;margin-bottom: 10px;}
h3{font-size:18px;font-weight:bold;padding:4px 0;margin:0}
form#form{overflow:hidden}
fieldset{float:left;min-height:48px;padding:0 4px 4px 4px;border:1px solid #ccc;margin-bottom:8px;margin-right:4px}
fieldset div{margin-top:4px}
input,select,textarea{color:#555;border:1px solid #ccc;padding: 2px 5px;}
fieldset select{margin-right:4px}
optgroup{font-size:11px}
code{background:#ffc;padding:2px 4px;}
code a:hover{background:transparent}
table{margin:4px 0 8px;border:1px solid #ccc;font-size:inherit}
tbody tr:hover td,tbody tr:hover th{background:#ffc}
th,td{text-align:left;padding:2px 4px;vertical-align:top;font-weight:normal;border:1px dotted #ccc;border-width:0 0 0 1px;
margin:0;background:inherit}
thead tr{text-align: center;font-weight: 800;color: #444;height:25px;line-height: 25px;}
thead tr td{background: #F7F6F6;color: #222;font-weight: 800;border-bottom: 1px solid #CCC;white-space:nowrap;}
th:first-child,td:first-child{border-color:transparent;white-space:nowrap}
td[align=right]{text-align:right}
table code{font-size:13px;line-height:18px}
.hidden{display:none}
.error,.message{padding:0;background:transparent;font-weight:bold}
.error{color:#c00}
.message{color:#090}
/* specific */
#content{margin:0 0 0 255px;height:100%;padding: 40px 10px 10px 0;}
#content:after{content:".";clear:both;height:0;overflow:hidden;display:block}
#lang{z-index: 10;background:#5579BA;color: #fff;position: fixed;
top: 0;right: 0px;padding: 0 20px 0 10px;line-height:30px;height: 35px;box-shadow: 0 -5px 50px #666;}
#lang select{border-color: #fff;height: 22px;line-height: 22px;padding:0px;font-size:12px;}
#content > p > a,.tabs a{border: 1px solid #ccc;display: inline-block;padding: 3px 1em;
margin-bottom: 4px;background: #eee;color: #555;
letter-spacing: 1px;border-radius: 15px;}
#content > p > a:hover,.tabs a:hover{background:#6787c1;color:#eee;border-right:1px solid #5579BA;}
#content > p > a.active,.tabs a.active{background:#5579BA;color:#fff;border-right:1px solid #5579BA;}
#menu{background:#E3E7EC;position:fixed;top: 30px;bottom:0px;overflow-x:hidden;
overflow-y: auto;left:0px;width:201px;padding:10px 15px;color:#333;
border-right:1px solid #ddf;margin:0;}
#menu a{color:#333;display: inline-block;margin:1px;line-height:18px;}
#menu a:hover{background:#333;color:#000;background: #C7D1DD;border:none;border-radius:10px;}
#menu a.h1,#menu a.h1:hover{display:block;height:0;width:175px;padding:40px 0 0 0;overflow:hidden;float:left;border:0;margin:0;
outline:0;background:url(http://www.bradezone.com/random/adminer_logo.gif) no-repeat;line-height:32px}
#menu p{white-space:nowrap;border:0;padding:0 0 4px 0;margin:0 0 4px 0;overflow: hidden !important;}
#menu p a.active{background: #8C9EB4;color: #fff;border-radius:10px;}
#menu h1 a{display: none;}
#menu h1:before{content: "Adminer ";line-height: 40px;}
#menu h1{text-align: center;margin-bottom: 10px;}
.logout a{border-bottom: 1px solid #ccc;}
.links a {white-space: nowrap;margin-right: 0px;}
.icon {background: #ccc;}
#content #breadcrumb{background: #5579BA;border-left: 1px solid #6787c1;height: 30px;color:#ddd;font-size: 16px;position:fixed;top:0;
left: 231px;width:100%;line-height:30px;padding:2px 10px;z-index:11;margin:0;}
#content #breadcrumb a{color:#fff;display:inline;padding:3px 6px;background:none;letter-spacing:0;text-decoration: underline;border:none;}
#content #breadcrumb a:hover{background:transparent;color:#f90;}
#schema .table{padding:4px 8px;background:#f3f3f3}
/* IE hacks */
*+html th:first-child,*+html td:first-child{border-color:inherit;white-space:inherit}
* html #lang,* html #menu,* html #breadcrumb{position:absolute}
* html #lang{padding-top:10px;height:30px;box-shadow: 0 -20px 50px #000;}
* html form#form{height:100%}
#logins a,#tables a{background: none}
#logout{color:#333;text-decoration:none;padding:4px 1em;}
#logout:hover{border-color:#333;background:#333;color:#fff}
.js .column{background:#ddd}
input,object{
border:1px solid #ccc;
color: #226; font-weight: normal;
background-color: #fcfdfe;
font-style:14px;
padding-top:4px 8px;
border-right-color:#888\9;
border-bottom-color:#888\9;
}
textarea{border: 1px solid #ccc;}
input[type=text] {padding:4px;background: #fffffa;font-size:12px;}
input[type=text]:focus{background: #ffffe6;border: 1px solid #5FA3EC;}
input[type=checkbox]{display: inline-block;margin-right: 10px;margin-left: 5px;}
input[type="button"],input[type="reset"],input[type="submit"]{
height:25px;
color: #6e6e6e;
text-decoration: none;
position: relative;
display: inline-block;
text-shadow: 0 1px 0 #fff;
-webkit-transition: border-color .15s;
-moz-transition: border .15s;
-o-transition: border-color .15s;
transition: border-color .15s;
background: #f3f3f3;
background-image: -moz-linear-gradient(top, #fafafa, #eeeeee); /* Firefox */
background: -webkit-gradient(linear,0% 40%,0% 70%,from(#FaFaFa),to(#eeeeee));
border: solid 1px #bbb;
border-radius: 2px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
padding:2px 1.2em;
cursor: pointer;
margin-bottom:2px;
}
input[type=button]:hover,input[type=reset]:hover,input[type=submit]:hover{
color: #333;
border-color: #aaa;
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3);
}
input.default {color: #000 !important;font-weight: 800;box-shadow: 0px 0px 5px #ccc;}
input[type=button]:active,input[type=reset]:active,input[type=submit]:active{
color: #448;
background: -webkit-gradient(linear,0% 40%,0% 70%,from(#F1F1F1),to(#FaFaFa));
background: -moz-linear-gradient(linear,0% 40%,0% 70%,from(#F1F1F1),to(#FaFaFa));
border-color: #888;
}
input[type="radio"]{border:none;display:inline-block;margin: 5px;}
input:focus{border:1px solid #75A1F0;outline:none;box-shadow:0 0 8px #75A1F0;
-webkit-transition:all 0.218s;-moz-transition: all .218s;-o-transition: all 0.218s;transition: all 0.218s;}
.js .checkable .checked td, .js .checkable .checked th {background: #ff9;}
.nowrap td, .nowrap th, td.nowrap {white-space: pre;line-height: 24px;}
code{background:none !important;}
.jush-sql{background:#eee;}
/* CSS by Brade - www.bradezone.com */
*{margin:0;padding:0}
/* 颜色微调【同样颜色灰度值调节】 */
::-webkit-scrollbar-track-piece{background-color:#f5f5f5;border-left:1px solid #d2d2d2}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background-color:#c2c2c2;background-clip:padding-box;border:1px solid #979797;min-height:28px}
::-webkit-scrollbar-thumb:hover{border:1px solid #636363;background-color:#929292}
body,select,input,button{font:13px "微软雅黑",Microsoft Yahei,STXihei,arial,sans-serif;background:#fff;color:#333}
code,pre,textarea{font: 14px Consolas, "Liberation Mono", Courier, monospace !important;}
/* generic */
a{-ms-transition: all 0.3s;
-webkit-transition: all 0.3s;
-moz-transition: all 0.3s;
-o-transition: all 0.3s;
transition: all 0.3s;
}
a,a:visited{color:#06c;text-decoration:none;padding: 1px 4px;}
a:hover{background:#C7D1DD;border-radius:10px;color:#555;text-decoration: none !important;}
p{padding-bottom:4px;margin-bottom:4px}
h1{font-size:18px;font-weight:bold;padding-bottom:0px;height:25px;padding:0 0 8px 0;color:#666;border:0;background:none;}
h2{font-size:24px;margin:0px;background:transparent;border:0;color:#366ec2;
padding: 10px 0;;border-bottom: 3px solid #eee;margin-bottom: 10px;}
h3{font-size:18px;font-weight:bold;padding:4px 0;margin:0}
form#form{overflow:hidden}
fieldset{float:left;min-height:48px;padding:0 4px 4px 4px;border:1px solid #ccc;margin-bottom:8px;margin-right:4px}
fieldset div{margin-top:4px}
input,select,textarea{color:#555;border:1px solid #ccc;padding: 2px 5px;}
fieldset select{margin-right:4px}
optgroup{font-size:11px}
code{background:#ffc;padding:2px 4px;}
code a:hover{background:transparent}
table{margin:4px 0 8px;border:1px solid #ccc;font-size:inherit}
tbody tr:hover td,tbody tr:hover th{background:#ffc}
th,td{text-align:left;padding:2px 4px;vertical-align:top;font-weight:normal;border:1px dotted #ccc;border-width:0 0 0 1px;
margin:0;background:inherit}
thead tr{text-align: center;font-weight: 800;color: #444;height:25px;line-height: 25px;}
thead tr td{background: #F7F6F6;color: #222;font-weight: 800;border-bottom: 1px solid #CCC;white-space:nowrap;}
th:first-child,td:first-child{border-color:transparent;white-space:nowrap}
td[align=right]{text-align:right}
table code{font-size:13px;line-height:18px}
.hidden{display:none}
.error,.message{padding:0;background:transparent;font-weight:bold}
.error{color:#c00}
.message{color:#090}
/* specific */
#content{margin:0 0 0 255px;height:100%;padding: 40px 10px 10px 0;}
#content:after{content:".";clear:both;height:0;overflow:hidden;display:block}
#lang{z-index: 10;background:#5579BA;color: #fff;position: fixed;
top: 0;right: 0px;padding: 0 20px 0 10px;line-height:30px;height: 35px;box-shadow: 0 -5px 50px #666;}
#lang select{border-color: #fff;height: 22px;line-height: 22px;padding:0px;font-size:12px;}
#content > p > a,.tabs a{border: 1px solid #ccc;display: inline-block;padding: 3px 1em;
margin-bottom: 4px;background: #eee;color: #555;
letter-spacing: 1px;border-radius: 15px;}
#content > p > a:hover,.tabs a:hover{background:#6787c1;color:#eee;border-right:1px solid #5579BA;}
#content > p > a.active,.tabs a.active{background:#5579BA;color:#fff;border-right:1px solid #5579BA;}
#menu{background:#E3E7EC;position:fixed;top: 30px;bottom:0px;overflow-x:hidden;
overflow-y: auto;left:0px;width:201px;padding:10px 15px;color:#333;
border-right:1px solid #ddf;margin:0;}
#menu a{color:#333;display: inline-block;margin:1px;line-height:18px;}
#menu a:hover{background:#333;color:#000;background: #C7D1DD;border:none;border-radius:10px;}
#menu a.h1,#menu a.h1:hover{display:block;height:0;width:175px;padding:40px 0 0 0;overflow:hidden;float:left;border:0;margin:0;
outline:0;background:url(http://www.bradezone.com/random/adminer_logo.gif) no-repeat;line-height:32px}
#menu p{white-space:nowrap;border:0;padding:0 0 4px 0;margin:0 0 4px 0;overflow: hidden !important;}
#menu p a.active{background: #8C9EB4;color: #fff;border-radius:10px;}
#menu h1 a{display: none;}
#menu h1:before{content: "Adminer ";line-height: 40px;}
#menu h1{text-align: center;margin-bottom: 10px;}
.logout a{border-bottom: 1px solid #ccc;}
.links a {white-space: nowrap;margin-right: 0px;}
.icon {background: #ccc;}
#content #breadcrumb{background: #5579BA;border-left: 1px solid #6787c1;height: 30px;color:#ddd;font-size: 16px;position:fixed;top:0;
left: 231px;width:100%;line-height:30px;padding:2px 10px;z-index:11;margin:0;}
#content #breadcrumb a{color:#fff;display:inline;padding:3px 6px;background:none;letter-spacing:0;text-decoration: underline;border:none;}
#content #breadcrumb a:hover{background:transparent;color:#f90;}
#schema .table{padding:4px 8px;background:#f3f3f3}
/* IE hacks */
*+html th:first-child,*+html td:first-child{border-color:inherit;white-space:inherit}
* html #lang,* html #menu,* html #breadcrumb{position:absolute}
* html #lang{padding-top:10px;height:30px;box-shadow: 0 -20px 50px #000;}
* html form#form{height:100%}
#logins a,#tables a{background: none}
#logout{color:#333;text-decoration:none;padding:4px 1em;}
#logout:hover{border-color:#333;background:#333;color:#fff}
.js .column{background:#ddd}
input,object{
border:1px solid #ccc;
color: #226; font-weight: normal;
background-color: #fcfdfe;
font-style:14px;
padding-top:4px 8px;
border-right-color:#888\9;
border-bottom-color:#888\9;
}
textarea{border: 1px solid #ccc;}
input[type=text] {padding:4px;background: #fffffa;font-size:12px;}
input[type=text]:focus{background: #ffffe6;border: 1px solid #5FA3EC;}
input[type=checkbox]{display: inline-block;margin-right: 10px;margin-left: 5px;}
input[type="button"],input[type="reset"],input[type="submit"]{
height:25px;
color: #6e6e6e;
text-decoration: none;
position: relative;
display: inline-block;
text-shadow: 0 1px 0 #fff;
-webkit-transition: border-color .15s;
-moz-transition: border .15s;
-o-transition: border-color .15s;
transition: border-color .15s;
background: #f3f3f3;
background-image: -moz-linear-gradient(top, #fafafa, #eeeeee); /* Firefox */
background: -webkit-gradient(linear,0% 40%,0% 70%,from(#FaFaFa),to(#eeeeee));
border: solid 1px #bbb;
border-radius: 2px;
-webkit-border-radius: 2px;
-moz-border-radius: 2px;
padding:2px 1.2em;
cursor: pointer;
margin-bottom:2px;
}
input[type=button]:hover,input[type=reset]:hover,input[type=submit]:hover{
color: #333;
border-color: #aaa;
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3);
}
input.default {color: #000 !important;font-weight: 800;box-shadow: 0px 0px 5px #ccc;}
input[type=button]:active,input[type=reset]:active,input[type=submit]:active{
color: #448;
background: -webkit-gradient(linear,0% 40%,0% 70%,from(#F1F1F1),to(#FaFaFa));
background: -moz-linear-gradient(linear,0% 40%,0% 70%,from(#F1F1F1),to(#FaFaFa));
border-color: #888;
}
input[type="radio"]{border:none;display:inline-block;margin: 5px;}
input:focus{border:1px solid #75A1F0;outline:none;box-shadow:0 0 8px #75A1F0;
-webkit-transition:all 0.218s;-moz-transition: all .218s;-o-transition: all 0.218s;transition: all 0.218s;}
.js .checkable .checked td, .js .checkable .checked th {background: #ff9;}
.nowrap td, .nowrap th, td.nowrap {white-space: pre;line-height: 24px;}
code{background:none !important;}
.jush-sql{background:#eee;}

0
lib/plugins/adminer/index.php Normal file → Executable file
View File

0
lib/plugins/index.html Normal file → Executable file
View File

0
static/images/app/365.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

0
static/images/app/app_s1.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

0
static/images/app/app_s2.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
static/images/app/baidu.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

BIN
static/images/app/ball8.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

0
static/images/app/cal.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

0
static/images/app/calcu.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

0
static/images/app/chuangyebang.jpg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
static/images/app/computer.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

0
static/images/app/douban.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

0
static/images/app/fruite.jpg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

0
static/images/app/geling.jpg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

0
static/images/app/haozhaopian.jpg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

BIN
static/images/app/icloud.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

0
static/images/app/internet.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

0
static/images/app/iqiyi.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 6.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

0
static/images/app/js.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
static/images/app/kuaidi.gif Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

0
static/images/app/kugou.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
static/images/app/kugou2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

0
static/images/app/kugou_radio.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
static/images/app/linux.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

0
static/images/app/map.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

0
static/images/app/market.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

0
static/images/app/meishi.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

0
static/images/app/meitu.gif Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

0
static/images/app/oexe.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

0
static/images/app/pptv.jpg Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

0
static/images/app/ps.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

0
static/images/app/qqmusic.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
static/images/app/recycle.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

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