version 4.37 release

pull/313/head
warlee 2018-11-28 18:35:58 +08:00
parent f366e2ad2a
commit ae89910dc9
53 changed files with 593 additions and 1402 deletions

View File

@ -1,3 +1,26 @@
### ver4.37 `2018/11/28`
-----
#### update:
- 大文件上传合并超时处理优化。
- 右键菜单优化:切换列表模式、图标大小、排序方式不自动隐藏
- 压缩文件时创建文件已存在则自动重命名
- markdown工具设置支持多光标加标签/取消标签
- 编辑器光标位置记录支持前进后退
- 移动端图片多选上传加入去除针对ios 11 以前的兼容;
- 更新插件插件服务器兼容不支持访问https的情况
- https页面不允许打开http页面的情况兼容检测后对话框模式改为新窗口打开模式
#### fix bug
- zip查看大文件内容部分文件名位置错位中文乱码问题解决自动识别中文编码优化
- bug处理ltrim trim rtrim //参数是分割值字符,移除左侧所有;而不是移除左侧字符串;
- kod 永中office预览兼容; php curl上传的一个兼容性问题
- kod 上传处理兼容( IIS 配置问题 IIS+PHP无法上传)
- zip解压缩:zip64打包兼容解压兼容压缩包内含有大于4G文件时处理优化
- 上传失败提示优化;普通版本不检测空间大小
- 分享文件夹,文件打开预览不了问题处理
### ver4.36 `2018/09/28`
-----
#### update:

View File

@ -979,7 +979,7 @@ class explorer extends Controller{
$pathThisName=get_path_this(get_path_father($files[0]));
}
$zipname = $basicPath.$namePre.$pathThisName.'.'.$fileType;
$zipname = get_filename_auto($zipname,'',$this->config['user']['fileRepeat']);
$zipname = get_filename_auto($zipname,'','rename');//已存在重命名
if($checkSpaceChange){Hook::trigger("explorer.zipBefore",$zipname);}
$result = KodArchive::create($zipname,$files);

View File

@ -274,6 +274,7 @@ class user extends Controller{
'selfShare' => systemMember::userShareList($this->user['userID']),
'userConfig' => $this->config['user'],
'accessToken' => access_token_get(),
'versionEnv' => base64_encode(serverInfo()),
//虚拟目录
'KOD_GROUP_PATH' => KOD_GROUP_PATH,
@ -444,6 +445,9 @@ class user extends Controller{
}
private function _loginDisplay($msg,$success){
if(isset($this->in['isAjax'])){
if(isset($this->in['getToken']) && $success){
show_json(access_token_get(),true);
}
show_json($msg,$success);
}else{
if($success){

View File

@ -14,12 +14,15 @@ class userShare extends Controller{
/**
* 获取
*/
public function get() {
public function get($ret = 0) {
$list = $this->sql->get();
foreach($list as $key=>&$val){
//unset($val['sharePassword']);
}
return $list;
if($ret){
return $list;
}
show_json($list, true);
}
//检测该目录是否已被共享
@ -29,7 +32,7 @@ class userShare extends Controller{
if (!$shareInfo) {
show_json('',false);//没有找到
}else{
show_json($shareInfo,true,$this->get());
show_json($shareInfo,true,$this->get(1));
}
}
@ -76,7 +79,7 @@ class userShare extends Controller{
$infoNew[$key] = $val;
}
if($this->sql->set($this->in['sid'],$infoNew)){
show_json($infoNew,true,$this->get());
show_json($infoNew,true,$this->get(1));
}
show_json(LNG('error'),false);
}else{//插入
@ -87,7 +90,7 @@ class userShare extends Controller{
}
$shareInfo['sid'] = $newId;
if($this->sql->set($newId,$shareInfo)){
show_json($shareInfo,true,$this->get());
show_json($shareInfo,true,$this->get(1));
}
show_json(LNG('error'),false);
}
@ -102,6 +105,6 @@ class userShare extends Controller{
foreach ($list as $val) {
$this->sql->remove($val['path']);
}
show_json(LNG('success'),true,$this->get());
show_json(LNG('success'),true,$this->get(1));
}
}

File diff suppressed because one or more lines are too long

View File

@ -17,6 +17,7 @@ function myAutoloader($name) {
SDK_DIR.$name.'.class.php',
CORER_DIR.'/Driver/Cache/'.$name.'.class.php',
CORER_DIR.'/Driver/DB/'.$name.'.class.php',
CORER_DIR.'/IO/'.$name.'.class.php',
MODEL_DIR.$name.'.class.php',
CONTROLLER_DIR.$name.'.class.php',
@ -87,6 +88,25 @@ function strip($str){
return preg_replace('!\s+!', '', $str);
}
// 删除字符串两端的字符串
function str_trim($str,$remove){
return str_rtrim(str_ltrim($str,$remove),$remove);
}
function str_ltrim($str,$remove){
if(!$str || !$remove) return false;
while(substr($str,0,strlen($remove)) == $remove){
$str = substr($str,strlen($remove));
}
return $str;
}
function str_rtrim($str,$remove){
if(!$str || !$remove) return false;
while(substr($str,-strlen($remove)) == $remove){
$str = substr($str,0,-strlen($remove));
}
return $str;
}
/**
* 获取精确时间
*/
@ -148,8 +168,9 @@ function obj2array($obj){
function ignore_timeout(){
@ignore_user_abort(true);
@set_time_limit(24 * 60 * 60);//set_time_limit(0) 1day
@ini_set('memory_limit', '2028M');//2G;
@ini_set("max_execution_time",48 * 60 * 60);
@set_time_limit(48 * 60 * 60);//set_time_limit(0) 2day
@ini_set('memory_limit', '4000M');//4G;
}
@ -407,6 +428,10 @@ function show_tips($message,$url= '', $time = 3,$title = ''){
if($title == ''){
$title = "出错了!";
}
//移动端;报错输出
if(isset($_REQUEST['HTTP_X_PLATFORM'])){
show_json($message,false);
}
if(is_array($message) || is_object($message)){
$message = json_encode_force($message);
@ -622,6 +647,11 @@ function show_trace(){
}
function file_sub_str($file,$start=0,$len=0){
$size = filesize($file);
if($start < 0 ){
$start = $size + $start;
$len = $size - $start;
}
$fp = fopen($file,'r');
fseek($fp,$start);
$res = fread($fp,$len);
@ -976,4 +1006,4 @@ function pkcs5_unpad($text){
function pkcs5_pad($text, $block = 8){
$pad = $block - (strlen($text) % $block);
return $text . str_repeat(chr($pad), $pad);
}
}

View File

@ -51,6 +51,9 @@ function iconv_system($str){
return $result;
}
function iconv_to($str,$from,$to){
if (strtolower($from) == strtolower($to)){
return $str;
}
if (!function_exists('iconv')){
return $str;
}
@ -1328,6 +1331,7 @@ function updload_ios_check($fileName,$in){
* post上传base64Upload=1;file=base64str;name=filename
*/
function upload($path,$tempPath,$repeatAction='replace'){
ignore_timeout();
global $in;
$fileInput = 'file';
$fileName = "";
@ -1365,10 +1369,6 @@ function upload($path,$tempPath,$repeatAction='replace'){
return upload_chunk($uploadFile,$tempPath,$savePath);
}
if(kod_move_uploaded_file($uploadFile,$savePath)){
if( isset($in['size']) && filesize($savePath) != $in['size'] ){
unlink($savePath);
show_json('move_error',false);
}
Hook::trigger('uploadFileAfter',$savePath);
show_json('upload_success',true,iconv_app(_DIR_OUT($savePath)));
}else {
@ -1478,10 +1478,6 @@ function upload_chunk($uploadFile,$tempPath,$savePath){
}
unlink($existMaxFile);
$res = rename($savePathTemp,$savePath);
if( isset($in['size']) && filesize($savePath) != $in['size'] ){
unlink($savePath);
show_json('move_error',false);
}
if(!$res){
unlink($savePath);
$res = rename($savePathTemp,$savePath);

View File

@ -41,21 +41,21 @@ function zip_pre_name($fileName,$toCharset=false){
$toCharset = 'utf-8';
$clientLanugage = I18n::defaultLang();
$langType = I18n::getType();
if(client_is_windows() && (
if( client_is_windows() && (
$clientLanugage =='zh-CN' ||
$clientLanugage =='zh-TW' ||
$langType =='zh-CN' ||
$langType =='zh-TW')
){
$langType =='zh-TW' )
){
$toCharset = "gbk";//压缩或者打包下载压缩时文件名采用的编码
}
}
//write_log("zip:".$charset.';'.$toCharset.';'.$fileName,'zip');
$result = iconv_to($fileName,$charset,$toCharset);
if(!$result){
$result = $fileName;
}
//write_log("zip:".$charset.'=>'.$toCharset.';'.$fileName.'=>'.$result,'zip');
return $result;
}
@ -110,6 +110,35 @@ function unzip_charset_get($list){
return $keys[0];
}
/**
* 服务器相关环境
* 检测环境是否支持升级版本
*/
function serverInfo(){
$lib = array(
"sqlit3"=>intval( class_exists('SQLite3') ),
"sqlit" =>intval( extension_loaded('sqlite') ),
"curl" =>intval( function_exists('curl_init') ),
"pdo" =>intval( class_exists('PDO') ),
"mysqli"=>intval( extension_loaded('mysqli') ),
"mysql" =>intval( extension_loaded('mysql') ),
);
$libStr = "";
foreach($lib as $key=>$val){
$libStr .= $key.'='.$val.';';
}
$system = explode(" ", php_uname());
$env = array(
"sys" => strtolower($system[0]),
"php" => floatval(PHP_VERSION),
"server"=> $_SERVER['SERVER_SOFTWARE'],
"lib" => $libStr,
"info" => php_uname().';phpv='.PHP_VERSION,
);
$result = str_replace("\/","@",json_encode($env));
return $result;
}
function charset_check(&$str,$check,$tempCharset='utf-8'){
if ($str === '' || !function_exists("mb_convert_encoding")){
return false;
@ -385,6 +414,10 @@ function user_logout(){
if(ACT != 'logout' && count($_GET)!=0 ){
$url .= '&link='.rawurlencode(this_url());
}
//移动端;接口请求时退出
if(isset($_REQUEST['HTTP_X_PLATFORM'])){
show_json('login error!',10001);
}
header('Location:'.$url);
exit;
}

View File

@ -292,7 +292,7 @@ function url_request($url,$method='GET',$data=false,$headers=false,$options=fals
$ch = curl_init();
$upload = false;
if(is_array($data)){//上传检测并兼容
foreach($data as $key => &$value){
foreach($data as $key => $value){
if(!is_string($value) || substr($value,0,1) !== "@"){
continue;
}
@ -305,9 +305,9 @@ function url_request($url,$method='GET',$data=false,$headers=false,$options=fals
unset($data['curlUploadName']);
}
if (class_exists('\CURLFile')){
$value = new CURLFile(realpath($path),$mime,$filename);
$data[$key] = new CURLFile(realpath($path),$mime,$filename);
}else{
$value = "@".realpath($path).";type=".$mime.";filename=".$filename;
$data[$key] = "@".realpath($path).";type=".$mime.";filename=".$filename;
}
//有update且method为PUT
if($method == 'PUT'){

View File

@ -87,14 +87,13 @@ class KodArchive {
$result = $appResult['data'];
}
}else{//默认zip
if(kodZipArchive::support()){
if(kodZipArchive::support('list')){
$result = kodZipArchive::listContent($file);
}else{
$zip = new PclZip($file);
$result = $zip->listContent();
}
}
if($result){
//编码转换
$charset = unzip_charset_get($result);
@ -102,7 +101,7 @@ class KodArchive {
for ($i=0; $i < count($result); $i++) {
//不允许相对路径
$result[$i]['filename'] = str_replace(array('../','..\\'),"_",$result[$i]['filename']);
$charset = get_charset($result[$i]['filename']);
// $charset = get_charset($result[$i]['filename']);
if($output){
$result[$i]['filename'] = iconv_to($result[$i]['filename'],$charset,'utf-8');
unset($result[$i]['stored_filename']);
@ -171,7 +170,7 @@ class KodArchive {
return array('code'=>$result,'data'=>PclErrorString(true));
}else if( self::checkIfType($ext,'rar')){ // || $ext == 'zip'
return kodRarArchive::extract($file,$dest,$ext,$partName);
}else if(kodZipArchive::support()){
}else if(kodZipArchive::support('extract')){
return kodZipArchive::extract($file,$dest,$partName);
}else{
$zip = new PclZip($file);
@ -296,7 +295,7 @@ class KodArchive {
$ext = get_path_ext($file);
$result = false;
if( self::checkIfType($ext,'zip') ){
if(kodZipArchive::support()){
if(kodZipArchive::support('add')){
return kodZipArchive::create($file,$files);
}
$archive = new PclZip($file);

View File

@ -9,11 +9,15 @@
// ZipArchive 解压缩
class kodZipArchive{
static $listCache = array();
static function support(){
if(!defined("ZIP_ARCHIVE_LOCAL")){
return false;
static function support($type=''){
$result = false;
if($type == 'extract' && defined("ZIP_ARCHIVE_LOCAL")){// 只允许创建压缩文件用系统调用
$result = true;
}
if(!class_exists('ZipArchive')){
$result = false;
}
return class_exists('ZipArchive');
return $result;
}
static function listContent($file){
$file_hash = hash_path($file);
@ -126,6 +130,7 @@ class kodZipArchive{
$list = array($val);
if(is_dir($val)){
$list = dir_list($val);
$list[] = $val;
}
foreach ($list as $item) {
$addName = zip_pre_name(str_replace($removePathPre,'',$item));

View File

@ -3921,7 +3921,7 @@
$v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']);
// ----- Decompress the file
$v_file_content = @gzinflate($v_buffer);
$v_file_content = gzinflate($v_buffer);
unset($v_buffer);
if ($v_file_content === FALSE) {
@ -4254,7 +4254,7 @@
$v_data = @fread($this->zip_fd, $p_entry['compressed_size']);
// ----- Decompress the file
if (($p_string = @gzinflate($v_data)) === FALSE) {
if (($p_string = gzinflate($v_data)) === FALSE) {
// TBC
}
}
@ -4321,8 +4321,6 @@
// ----- Check signature
if ($v_data['id'] != 0x04034b50)
{
pr($p_header,$v_data,0x04034b50,str2hex($v_binary_data));
// ----- Error log
PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'privReadFileHeader:Invalid archive structure');
@ -4411,18 +4409,68 @@
//zip64 footer:extra data;add by warlee;
//64位文件头读取处理
function readZip64ExtraData(&$p_header){
$size = filesize($this->zipname);
//不符合zip64 的大于4G的文件处理溢出寻找标记头
if(!$this->zip64 && $size >= 0xFFFFFFFF){
$zip = fopen($this->zipname,'rb');
$from = $p_header['offset'];
while($from < $size){
fseek($zip,$from);
$sign = unpack('Vid',@fread($zip, 4));
//pr($from,$sign,0x04034b50);
if($sign['id'] == 0x04034b50){
$p_header['offset'] = $from;
break;
}else{
$from = $from + 0xFFFFFFFF + 1;//
}
}
//mac下压缩大于4G的文件
$from = 4+26+$p_header['compressed_size']+$p_header['filename_len']+$p_header['extra_len']+$p_header['comment_len']+20;
$add = 0;
while($from < $size){
fseek($zip,$from);
$sign = unpack("Vid",@fread($zip, 4));
// pr($from,$p_header,str2hex(file_sub_str($this->zipname,$from,50)) );
if($sign['id'] == 0x04034b50 || $sign['id'] == 0x02014b50 || $sign['id'] == 0x06054b50){
$p_header['size'] += $add;
$p_header['compressed_size'] += $add;
break;
}else{
$add += 0xFFFFFFFF + 1;
$from += $add;//
}
}
fclose($zip);
}
if(!$this->zip64 || !$p_header['extra']){
return;
};
//pr(strlen($p_header['extra']),str2hex($p_header['extra']));
$p_extra_data = unpack('va/vb/Psize/Pcompressed_size/Poffset',$p_header['extra']);//2+2+8+8+8
if(strlen($p_header['extra']) < 28){
$p_extra_data = unpack('va/vb/Psize/Pcompressed_size',$p_header['extra']);
$p_extra_data['offset'] = 0;
}
$p_extra_data = unpack('va/vb/Psize/Pcompressed_size/Poffset/Vx',$p_header['extra']);
if(strlen($p_header['extra']) < 20){//变长
$p_extra_data = unpack('va/vb/Psize',$p_header['extra']);
$p_extra_data['compressed_size'] = 0;
$p_extra_data['offset'] = 0;
}
//01 为zip64扩展数据标记
if($p_extra_data['a'] != 0x01){
if(!$p_extra_data || $p_extra_data['a'] != 0x01){
if($p_header['size'] >= 0xFFFFFFFF){//兼容非zip64 文件超过4G的文件情况
$this->privReadEndCentralDirZip4G($p_header);//校正偏移量;n*0xFFFFFFFF
}
return;
}
if($p_header['offset'] == 0xffffffff){
//var_dump(str2hex($v_binary_data),$p_header,str2hex($p_header['extra']),$p_extra_data);
}
if($p_header['compressed_size'] == 0xffffffff){
if($p_header['compressed_size'] == 0xffffffff && $p_extra_data['compressed_size'] > 0 ){
$p_header['compressed_size'] = $p_extra_data['compressed_size'];
}
//适配特殊情况; 顺序适配
@ -4734,6 +4782,11 @@
if($v_data['offset'] == 0xFFFFFFFF){
return $this->privReadEndCentralDirZip64($p_central_dir,$v_data);
}
if($v_size >= 0xFFFFFFFF){
//兼容非zip64 压缩超过4G的文件情况
return $this->privReadEndCentralDirZip4G($p_central_dir);
}
// TBC
//for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) {
//}
@ -4741,6 +4794,25 @@
// ----- Return
return $v_result;
}
//超过4G的文件通过溢出查找偏移位置
function privReadEndCentralDirZip4G(&$p_central_dir){
$zip = fopen($this->zipname,'rb');
$from = $p_central_dir['offset'];
$size = filesize($this->zipname);
while($from < $size){
fseek($zip,$from);
$sign = unpack('Vid',@fread($zip, 4));
//debug_out($from,$sign,0x02014b50);
if($sign['id'] == 0x02014b50){
$p_central_dir['offset'] = $from;
break;
}else{
$from = $from + 0xFFFFFFFF + 1;//
}
}
fclose($zip);
return 1;
}
// zip64 support;
//https://blog.csdn.net/a200710716/article/details/51644421

View File

@ -110,7 +110,6 @@ class pluginModel{
$this->saveData();
}
public function getConfigDefault($app){
$result = array();
$json = $this->getPackageJson($app);

View File

@ -15,6 +15,9 @@
<a action="save" href="javascript:;" title="<?php echo LNG('button_save');?>(Ctrl-S)"><i class="font-icon icon-save"></i></a>
<a action="saveall" href="javascript:;" title="<?php echo LNG('button_save_all');?>"><i class="font-icon icon-paste"></i></a>
<span class="line"></span>
<a href="javascript:;" id="editor-history-back" title="<?php echo LNG('history_back');?>(Ctrl -)"><i class="font-icon icon-chevron-left"></i></a>
<a href="javascript:;" id="editor-history-next" title="<?php echo LNG('history_next');?>(Ctrl Shift -)"><i class="font-icon icon-chevron-right"></i></a>
<span class="line"></span>
<a action="undo" href="javascript:;" title="<?php echo LNG('undo');?>(Ctrl-Z)"><i class="font-icon icon-undo"></i></a>
<a action="redo" href="javascript:;" title="<?php echo LNG('redo');?>(Ctrl-Y)"><i class="font-icon icon-repeat"></i></a>
<a action="refresh" href="javascript:;" title="<?php echo LNG('refresh');?>(F5)"><i class="font-icon icon-refresh"></i></a>

View File

@ -9,7 +9,7 @@
<div class="loginbox box-install aero" >
<div class="title">
<div class="logo"><i class="icon-cloud"></i><?php echo strip_tags(LNG('kod_name'));?></div>
<div class='info'>——<?php echo LNG('kod_name_desc');?></div>
<div class='info'><?php echo LNG('kod_name_desc');?></div>
<div class="menu-group">
<a id='footer-language' data-toggle="dropdown" href="javascript:void(0);" class="topbar-menu">
<i class='font-icon icon-flag'></i>Language<b class="caret"></b>

View File

@ -11,7 +11,7 @@
<div class="loginbox animated-500 fadeInDown aero" >
<div class="title">
<div class="logo"><i class="icon-cloud"></i><?php echo strip_tags(LNG('kod_name'));?></div>
<div class='info'>——<?php echo LNG('kod_name_desc');?></div>
<div class='info'><?php echo LNG('kod_name_desc');?></div>
<?php if(count($config['settingAll']['language']) > 1){ ?>
<div class="menu-group">
<a id='footer-language' data-toggle="dropdown" href="javascript:void(0);" class="topbar-menu">

View File

@ -75,7 +75,7 @@ return array(
"system_group_create" => "建立部門",
"system_group_name" => "部門名稱",
"system_group_father" => "上級部門",
"system_group_add" => "新增子部門",
"system_group_add" => "添加子部門",
"system_group_remove" => "刪除部門",
"system_group_remove_tips" => "確認刪除該部門?<br/>刪除後屬於該部門的使用者會移除,子部門移動到根部門",
"system_group_select" => "選擇所在部門",
@ -94,7 +94,7 @@ return array(
"system_member_remove_tips" => "確認刪除使用者?<br/>刪除後該使用者目錄會徹底刪除",
"system_member_set_role" => "確認更改所選使用者的權限組?",
"system_member_remove_group" => "確定將所選使用者從該組移除?",
"system_member_import" => "批次新增",
"system_member_import" => "批次添加",
"system_member_import_desc" => "每行一個使用者,<br/>已存在則自動忽略",
"system_member_use" => "啟用",
"system_member_unuse" => "禁用",
@ -103,17 +103,15 @@ return array(
"system_member_space_number" => "必須是數字!",
"system_member_group_config" => "批次設定部門",
"system_member_group_remove" => "從該部門移除",
"system_member_group_insert" => "新增到部門",
"system_member_group_insert" => "添加到部門",
"system_member_group_reset" => "重設部門",
"system_member_group_error" => "部門錯誤",
"system_group_action" => "部門管理",
"system_role_add" => "新增角色身份",
"system_role_add" => "添加角色身份",
"system_role_read" => "唯讀",
"system_role_write" => "可讀寫",
"system_setting_root_path" => "根目錄讀取",
"system_setting_root_path_desc" => "僅系統管理員可以讀取所有目錄,其他權限組使用者只能看到自己的使用者目錄。<br/>如果想開啟或關閉管理員讀取其他目錄,可以修改php防
跨站open_basedir參數,<a href=\"https://www.baidu.com/s?wd=php+open_basedir\" target=\"_blank\">如何設定</a>",
"system_setting_root_path" => "根目錄訪問",
"system_setting_root_path_desc" => "僅系統管理員可以訪問所有目錄,其他權限組使用者只能看到自己的使用者目錄。<br/>如果想開啟或關閉管理員訪問其他目錄,可以修改php防跨站open_basedir參數,<a href=\"https://www.baidu.com/s?wd=php+open_basedir\" target=\"_blank\">如何設定</a>",
"system_group_role_title" => "部門權限角色管理",
"system_group_role_remove" => "確定刪除部門角色",
"system_group_role_style" => "樣式",
@ -132,9 +130,9 @@ return array(
"role_type_name_write:upload" => "檔案(夾)上傳,遠程下載",
"role_type_name_write:remove" => "檔案(夾)刪除,剪下",
"group_guest" => "訪客",
"group_guest_desc" => "您不是該部門成員,<br/>僅能讀取[部門共享目錄]下面的內容,唯讀權限.",
"group_guest_desc" => "您不是該部門成員,<br/>僅能訪問[部門共享目錄]下面的內容,唯讀權限.",
"group_role_lebel_desc" => "您是該部門成員,<br/>部門內檔案所有操作權限均由管理員分配",
"button_save_and_add" => "儲存並繼續新增",
"button_save_and_add" => "儲存並繼續添加",
"path_cannot_search" => "該目錄不支援搜尋!",
"not_support" => "暫不支援!",
"group_not_exist" => "使用者組不存在!",
@ -146,7 +144,7 @@ return array(
"upload_exist_rename" => "重新命名",
"upload_exist_replace" => "覆蓋",
"upload_exist_skip" => "略過",
"upload_add_more" => "批次新增",
"upload_add_more" => "批次添加",
"more" => "更多",
"system_setting" => "系統設定",
"openProject" => "編輯器開啟項目",
@ -203,10 +201,10 @@ return array(
"uploading_move" => "合併轉存中...",
"show_file" => "新頁面預覽",
"unknow_file_title" => "檔案打開提示!",
"unknow_file_tips" => "沒有支援此檔案的程式,您可以:",
"unknow_file_tips" => "沒有支援此檔案的應用,您可以:",
"unknow_file_try" => "嘗試",
"unknow_file_download" => "下載該檔案",
"unknow_plugin_search" => "搜尋相關的程式安裝",
"unknow_plugin_search" => "搜尋相關的應用安裝",
"config_save_error_auth" => "設定儲存失敗,管理員禁止了此權限!",
"config_save_error_file" => "錯誤,檔案沒有寫權限!",
"beautify_code" => "程式碼格式化",
@ -258,7 +256,7 @@ return array(
"new_user_folder" => "新使用者預設建立目錄",
"new_user_folder_desc" => "用逗號隔開",
"new_user_app" => "新使用者預設建立app",
"new_user_app_desc" => "程式中心的程式,多個用逗號隔開",
"new_user_app_desc" => "應用中心的應用,多個用逗號隔開",
"auto_login" => "遊客自動登入",
"auto_login_desc" => "預設登入使用者為<code>guest/guest</code>的使用者;開啟後確保該使用者存在",
"first_in" => "登入後預設進入",
@ -294,9 +292,7 @@ return array(
"php_env_error_ignore" => "忽略並進入",
"php_env_error_version" => "PHP版本不能低於5.0",
"php_env_error_path" => "不可寫",
"php_env_error_list_dir" => "您的web伺服器開啟了列目錄功能為安全考慮請禁用該功能<a href=\"http://jingyan.baidu.com/article/22fe7ced389a0f3003617f41.html\"
target=\"blank\">如何操作?</a>",
"php_env_error_list_dir" => "您的web伺服器開啟了列目錄功能為安全考慮請禁用該功能<a href=\"http://jingyan.baidu.com/article/22fe7ced389a0f3003617f41.html\" target=\"blank\">如何操作?</a>",
"php_env_error_gd" => "須開啟php GD庫,否則驗證碼、縮圖使用將不正常",
"install_login" => "您可以用如下帳號登入",
"install_enter" => "進入系統",
@ -306,15 +302,9 @@ target=\"blank\">如何操作?</a>",
"login_root_password_equal" => "兩次密碼不一致!",
"login_root_password_tips" => "請設定管理員密碼!",
"forget_password" => "忘記密碼",
"forget_password_tips" => "管理員忘記密碼: <br/>請登入伺服器刪除<b>./data/system/install.lock</b>後重設; <br/><br/>非管理員忘記密碼: <br/>請聯繫管理員重設!
",
"copyright_desc" => "Kodexplorer是一款備受好評的web檔案管理系統你可以用它來做內部檔案管理或共享、也可以用來管理伺服器上的網站取代Ftp甚至可以當作
webIDE直接線上開發。同時你也可以將此程式二次開發整合到你現有的系統。",
"copyright_contact" => "授權或訂製請聯繫QQ:<a href=\"http://wpa.qq.com/msgrd?v=3&uin=3532208565&site=qq&menu=yes\" target=\"_blank
\">3532208565</a><a href=\"javascript:core.openWindow('http://bbs.kodcloud.com/');\">問題回饋</a>",
"forget_password_tips" => "管理員忘記密碼: <br/>請登入伺服器刪除<b>./data/system/install.lock</b>後重設; <br/><br/>非管理員忘記密碼: <br/>請聯繫管理員重設!",
"copyright_desc" => "Kodexplorer是一款備受好評的web檔案管理系統你可以用它來做內部檔案管理或共享、也可以用來管理伺服器上的網站取代Ftp甚至可以當作webIDE直接線上開發。同時你也可以將此程式二次開發整合到你現有的系統。",
"copyright_contact" => "授權或訂製請聯繫QQ:<a href=\"http://wpa.qq.com/msgrd?v=3&uin=3532208565&site=qq&menu=yes\" target=\"_blank\">3532208565</a><a href=\"javascript:core.openWindow('http://bbs.kodcloud.com/');\">問題回饋</a>",
"copyright_info" => "Copyright © <a href=\"https://kodcloud.com/?kodref=%s\" target=\"_blank\">kodcloud.com</a>.",
"copyright_pre" => "Powered by KodExplorer",
"kod_name" => "KodExplorer",
@ -322,14 +312,8 @@ webIDE直接線上開發。同時你也可以將此程式二次開發整合到
"kod_power_by" => " - Powered by KodExplorer",
"kod_name_copyright" => "可道雲•資源管理器",
"kod_meta_name" => "KodExplorer",
"kod_meta_keywords" => "KodExplorer,kod,kodCloud,webos,webIDE,php filemanage,filemanage,可道雲,芒果雲,檔案管理系統,企業雲端硬碟,資源管理器,,線上檔案,線上
Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"kod_meta_description" => "KodExplorer可道雲(原芒果雲)是業內領先的政務/企業私有雲和線上檔案管理系統,為個人網站、企業私有雲部署、網路儲存、線上檔案管理、線
上辦公等提供安全可控簡便易用、可高度訂製的私有雲產品。採用windows風格介面、操作習慣無需適應即可快速上手支援幾百種常用檔案格式的線上預覽、播放和編輯環境友
好,功能強大,是一款一經試用,就再也離不開的私有雲產品。",
"kod_meta_keywords" => "KodExplorer,kod,kodCloud,webos,webIDE,php filemanage,filemanage,可道雲,芒果雲,檔案管理系統,企業雲端硬碟,資源管理器,,線上檔案,線上Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"kod_meta_description" => "KodExplorer可道雲(原芒果雲)是業內領先的政務/企業私有雲和線上檔案管理系統為個人網站、企業私有雲部署、網路儲存、線上檔案管理、線上辦公等提供安全可控簡便易用、可高度訂製的私有雲產品。採用windows風格介面、操作習慣無需適應即可快速上手支援幾百種常用檔案格式的線上預覽、播放和編輯環境友好功能強大是一款一經試用就再也離不開的私有雲產品。",
"kod_meta_copyright" => "kodcloud.com",
"login" => "登入",
"guest_login" => "遊客登入",
@ -401,14 +385,14 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"action" => "操作",
"create_time" => "建立時間",
"modify_time" => "修改時間",
"last_time" => "最後讀取",
"last_time" => "最後訪問",
"sort_type" => "排序方式",
"time_type" => "Y/m/d H:i:s",
"time_type_info" => "Y/m/d H:i:s",
"public_path" => "公共目錄",
"system_path_not_change" => "系統目錄,不允許修改",
"file" => "",
"folder" => "資料",
"folder" => "",
"copy" => "複製",
"past" => "貼上",
"clone" => "建立副本",
@ -428,9 +412,9 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"order_desc" => "降序",
"order_asc" => "昇冪",
"rename" => "重新命名",
"add_to_fav" => "新增到收藏夾",
"add_to_fav" => "添加到收藏夾",
"search_in_path" => "資料夾中搜尋",
"add_to_play" => "新增到播放列表",
"add_to_play" => "添加到播放列表",
"manage_fav" => "管理收藏夾",
"refresh_tree" => "刷新樹目錄",
"manage_folder" => "管理目錄",
@ -459,10 +443,10 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"install" => "安裝",
"width" => "",
"height" => "",
"app" => "程式",
"app_store" => "程式",
"app_create" => "建立程式",
"app_edit" => "修改程式",
"app" => "應用",
"app_store" => "應用",
"app_create" => "建立應用",
"app_edit" => "修改應用",
"app_group_all" => "全部",
"app_group_game" => "遊戲",
"app_group_tools" => "工具",
@ -472,9 +456,9 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"app_group_life" => "生活",
"app_group_others" => "其他",
"app_desc" => "描述",
"app_icon" => "程式圖示",
"app_icon" => "應用圖示",
"app_icon_show" => "url地址或該目錄",
"app_group" => "程式分組",
"app_group" => "應用分組",
"app_type" => "類型",
"app_type_url" => "連結",
"app_type_code" => "js擴展",
@ -493,7 +477,7 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"refresh_all" => "強制刷新",
"newfile" => "建立檔",
"newfile_save_as" => "儲存到",
"newfolder" => "建立資料",
"newfolder" => "建立",
"newothers" => "建立其他",
"path_loading" => "載入中...",
"go" => "走著!",
@ -580,7 +564,7 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"setting_language" => "語言設定",
"setting_member" => "使用者管理",
"setting_group" => "使用者組管理",
"setting_group_add" => "新增使用者組",
"setting_group_add" => "添加使用者組",
"setting_group_edit" => "編輯使用者組",
"setting_theme" => "主題設定",
"setting_wall" => "壁紙設定",
@ -606,7 +590,7 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"group_move_user_error" => "所屬使用者組使用者移動失敗",
"group_already_remove" => "該使用者組已被刪除",
"group_not_exists" => "該使用者組不存在",
"member_add" => "新增使用者",
"member_add" => "添加使用者",
"password_null_not_update" => "密碼不填表示不更改",
"if_save_file_tips" => "有檔案未儲存,確定關閉視窗?",
"if_save_file" => "檔尚未儲存,是否儲存?",
@ -625,7 +609,7 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"group_role_group" => "使用者組管理",
"group_role_member" => "使用者管理",
"group_role_mkfile" => "建立檔",
"group_role_mkdir" => "建立資料",
"group_role_mkdir" => "建立",
"group_role_pathrname" => "重新命名",
"group_role_pathdelete" => "檔案刪除",
"group_role_pathinfo" => "檔案屬性",
@ -638,17 +622,13 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"group_role_download" => "遠程下載",
"group_role_passowrd" => "修改密碼",
"group_role_config" => "使用者設定",
"group_role_fav" => "收藏夾操作(新增/編輯/刪除)",
"group_role_fav" => "收藏夾操作(添加/編輯/刪除)",
"action_list" => "列表查看",
"action_add" => "新增",
"action_add" => "添加",
"action_edit" => "編輯",
"action_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>",
"group_tips" => "<li> 1.使用者組名不能重複,修改組名後原屬於改組使用者會自動關聯</li><li> 2.副檔名限制關係系統安全性,請務必謹慎操作<i>(如果在web目錄下建立php;就意味著改程式的權限對此使用者形同虛設)</i> </li><li> 3.戶管理、權限組管理;查看權限和增刪改權限是綁定的;程式會自動關聯</li><li> 4.設定權限組能添加權限組後,後續權限是不繼承的<i>(此權限相當於最高權限)</i> </li>",
"not_null" => "必填項不能為空!",
"picture_can_not_null" => "圖片地址不能為空!",
"rname_success" => "重新命名成功!",
@ -665,7 +645,7 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"no_permission_write_file" => "該檔案無寫權限",
"no_permission_read_all" => "該檔案或目錄沒有讀取權限",
"copy_not_exists" => "來源不存在",
"current_has_parent" => "目標資料夾是原始檔案夾的子資料夾!",
"current_has_parent" => "目標檔夾是原始檔案夾的子檔夾!",
"past_success" => "<b>貼上操作完成</b>",
"cute_past_success" => "<b>剪下操作完成</b>(來源檔案被刪除,剪貼簿清空)",
"zip_success" => "壓縮完成",
@ -693,11 +673,11 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"button_cancel" => "取消",
"button_edit" => "編輯",
"button_save" => "儲存",
"button_apply" => "",
"button_apply" => "",
"button_save_all" => "儲存全部",
"button_not_save" => "不儲存",
"button_add" => "新增",
"button_back_add" => "返回新增",
"button_add" => "添加",
"button_back_add" => "返回添加",
"button_del" => "刪除",
"button_save_edit" => "儲存修改",
"button_save_submit" => "儲存提交",
@ -786,8 +766,8 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"PluginInstallSelf" => "手動安裝",
"Plugin.config.auth" => "使用權限",
"Plugin.config.authDesc" => "設定所有人可用,或者指定使用者、使用者組、權限組可以使用",
"Plugin.config.authOpen" => "開放讀取",
"Plugin.config.authOpenDesc" => "無需登入皆可讀取,可用於對外介面調用",
"Plugin.config.authOpen" => "開放訪問",
"Plugin.config.authOpenDesc" => "無需登入皆可訪問,可用於對外介面調用",
"Plugin.config.authAll" => "所有人",
"Plugin.config.authUser" => "指定使用者",
"Plugin.config.authGroup" => "指定部門",
@ -816,9 +796,9 @@ Office,線上辦公,線上CAD預覽,線上編輯,線上編輯器",
"Explorer.UI.appSetDefault" => "設定預設打開",
"Explorer.UI.appAwaysOpen" => "始終使用選擇的程式打開這種檔案",
"Explorer.UI.selectAppDesc" => "選擇您想用來打開此檔案的程式",
"Explorer.UI.selectAppWarning" => "請選擇程式!",
"Explorer.UI.appTypeSupport" => "支援程式",
"Explorer.UI.appTypeAll" => "所有程式",
"kodApp.oexe.edit" => "編輯輕程式",
"kodApp.oexe.open" => "打開輕程式"
);
"Explorer.UI.selectAppWarning" => "請選擇應用!",
"Explorer.UI.appTypeSupport" => "支援應用",
"Explorer.UI.appTypeAll" => "所有應用",
"kodApp.oexe.edit" => "編輯輕應用",
"kodApp.oexe.open" => "打開輕應用"
);

View File

@ -18,7 +18,7 @@ $config['settings'] = array(
'httpSendFile' => false, //调用webserver下载 http://www.laruence.com/2012/05/02/2613.html;
//https://www.lovelucy.info/x-sendfile-in-nginx.html
'pluginServer' => "https://api.kodcloud.com/?",
'pluginServer' => "http://api.kodcloud.com/?",
'staticPath' => "./static/", //静态文件目录,可以配置到cdn;
'pluginHost' => PLUGIN_HOST //静态文件目录
);
@ -76,6 +76,10 @@ $config['settingSystemDefault']['menu'] = array(
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')
);
if( strstr(I18n::defaultLang(),'zh') || strstr(I18n::getType(),'zh') ){
$config['settingSystemDefault']['newGroupFolder'] = "share,文档,图片资料,视频资料";
$config['settingSystemDefault']['newUserFolder'] = "我的文档,图片,视频,音乐";
}
//新用户初始化默认配置
$config['settingDefault'] = array(

View File

@ -1,2 +1,2 @@
<?php
define('KOD_VERSION','4.36');
define('KOD_VERSION','4.37');

File diff suppressed because one or more lines are too long

View File

@ -59,7 +59,7 @@ class yzOfficePlugin extends PluginBase{
//替换内容
$config = $this->getConfig();
$pagePath = get_path_father($html);
$pageID = rtrim(get_path_this($html),'.html').'.files';
$pageID = $this->str_rtrim(get_path_this($html),'.html').'.files';
$urlTo = $pagePath.'/'.$pageID.'/';
//show_json(array($pageID,$pagePath,$urlTo),false);
if($config['cacheFile']){ //始终使用缓存
@ -72,6 +72,13 @@ class yzOfficePlugin extends PluginBase{
echo $content;
include('php/assign/footer.php');
}
private function str_rtrim($str,$remove){
if(!$str || !$remove) return false;
while(substr($str,-strlen($remove)) == $remove){
$str = substr($str,0,-strlen($remove));
}
return $str;
}
public function task(){

View File

@ -10,6 +10,7 @@ class zipViewPlugin extends PluginBase{
));
}
public function unzipList(){
$maxLength = 50000;
$path = $this->filePath($this->in['path']);
if(isset($this->in['index'])){
$download = isset($this->in['download'])?true:false;
@ -17,12 +18,20 @@ class zipViewPlugin extends PluginBase{
}else{
$cacheFile = TEMP_PATH.'zipView/'.hash_path($path).'.log';
if(file_exists($cacheFile)){
$data = json_decode(file_get_contents($cacheFile),true);
$content = file_get_contents($cacheFile);
$data = json_decode($content,true);
if( count($data) >= $maxLength ){
show_json("包含内容太多(".count($data)."项),请在本地打开查看;",false);
}
show_json($data);
}
mk_dir(get_path_father($cacheFile));
$result = KodArchive::listContent($path);
$data = json_encode($result['data']);
if( count($result['data']) >= $maxLength ){
show_json("包含内容太多(".count($result['data'])."项),请在本地打开查看;",false);
}
if($result['code'] && $data){
file_put_contents($cacheFile,$data);
show_json($result['data'],$result['code']);

View File

@ -333,9 +333,10 @@ define(function(require, exports) {
//ext = 'unknow';
}
//文件太大,提示解压后
if(node.size >= 1024*1024*200){
if(node.size >= 1024*1024*300){
Tips.tips(LNG.zipview_file_big,'warning');
ext = 'unknow';
return;
}
kodApp.setLastOpenTarget($('#'+node.tId));
kodApp.open(node.path,ext,app);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -161,8 +161,8 @@ ace.define("ace/ext/searchboxKod", ["require", "exports", "module", "ace/lib/dom
</div>\
</div>\
<div class="ace_search_action">\
<button type="button" action="findNext" class="ace_searchbtn next"><i class="font-icon icon-angle-left"></i></button>\
<button type="button" action="findPrev" class="ace_searchbtn prev"><i class="font-icon icon-angle-right"></i></button>\
<button type="button" action="findPrev" class="ace_searchbtn prev"><i class="font-icon icon-angle-left"></i></button>\
<button type="button" action="findNext" class="ace_searchbtn next"><i class="font-icon icon-angle-right"></i></button>\
<button type="button" action="findAll" class="ace_searchbtn" title="Alt-Enter">All</button>\
</div>\
</div>\
@ -278,10 +278,14 @@ ace.define("ace/ext/searchboxKod", ["require", "exports", "module", "ace/lib/dom
event.addListener(sb, "click", function(e) {
var t = e.target || e.srcElement;
var action = t.getAttribute("action");
if (action && _this[action])
if(!action){
action = $(e.target).parent().attr('action');
}
if (action && _this[action]){
_this[action]();
else if (_this.$searchBarKb.commands[action])
}else if (_this.$searchBarKb.commands[action]){
_this.$searchBarKb.commands[action].exec(_this);
}
event.stopPropagation(e);
});

View File

@ -1,11 +1,11 @@
/*! =======================================================
VERSION 4.4.0
VERSION 10.2.1
========================================================= */
/*! =========================================================
* bootstrap-slider.js
*
* Maintainers:
* Kyle Kemp
* Maintainers:
* Kyle Kemp
* - Twitter: @seiyria
* - Github: seiyria
* Rohit Kalkur
@ -13,20 +13,33 @@
* - Github: rovolution
*
* =========================================================
*
* bootstrap-slider is released under the MIT License
* Copyright (c) 2017 Kyle Kemp, Rohit Kalkur, and contributors
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ========================================================= */
.slider {
.slider {
display: inline-block;
vertical-align: middle;
position: relative;
@ -42,22 +55,66 @@
top: 50%;
left: 0;
}
.slider.slider-horizontal .slider-selection {
.slider.slider-horizontal .slider-selection,
.slider.slider-horizontal .slider-track-low,
.slider.slider-horizontal .slider-track-high {
height: 100%;
top: 0;
bottom: 0;
}
.slider.slider-horizontal .slider-tick,
.slider.slider-horizontal .slider-handle {
margin-left: -10px;
margin-top: -5px;
}
.slider.slider-horizontal .slider-tick.triangle,
.slider.slider-horizontal .slider-handle.triangle {
position: relative;
top: 50%;
-ms-transform: translateY(-50%);
transform: translateY(-50%);
border-width: 0 10px 10px 10px;
width: 0;
height: 0;
border-bottom-color: #0480be;
border-bottom-color: #2e6da4;
margin-top: 0;
}
.slider.slider-horizontal .slider-tick-container {
white-space: nowrap;
position: absolute;
top: 0;
left: 0;
width: 100%;
}
.slider.slider-horizontal .slider-tick-label-container {
white-space: nowrap;
margin-top: 20px;
}
.slider.slider-horizontal .slider-tick-label-container .slider-tick-label {
padding-top: 4px;
display: inline-block;
text-align: center;
}
.slider.slider-horizontal .tooltip {
-ms-transform: translateX(-50%);
transform: translateX(-50%);
}
.slider.slider-horizontal.slider-rtl .slider-track {
left: initial;
right: 0;
}
.slider.slider-horizontal.slider-rtl .slider-tick,
.slider.slider-horizontal.slider-rtl .slider-handle {
margin-left: initial;
margin-right: -10px;
}
.slider.slider-horizontal.slider-rtl .slider-tick-container {
left: initial;
right: 0;
}
.slider.slider-horizontal.slider-rtl .tooltip {
-ms-transform: translateX(50%);
transform: translateX(50%);
}
.slider.slider-vertical {
height: 210px;
width: 20px;
@ -65,8 +122,7 @@
.slider.slider-vertical .slider-track {
width: 10px;
height: 100%;
margin-left: -5px;
left: 50%;
left: 25%;
top: 0;
}
.slider.slider-vertical .slider-selection {
@ -75,16 +131,51 @@
top: 0;
bottom: 0;
}
.slider.slider-vertical .slider-track-low,
.slider.slider-vertical .slider-track-high {
width: 100%;
left: 0;
right: 0;
}
.slider.slider-vertical .slider-tick,
.slider.slider-vertical .slider-handle {
margin-left: -5px;
margin-top: -10px;
}
.slider.slider-vertical .slider-tick.triangle,
.slider.slider-vertical .slider-handle.triangle {
border-width: 10px 0 10px 10px;
width: 1px;
height: 1px;
border-left-color: #0480be;
border-left-color: #2e6da4;
border-right-color: #2e6da4;
margin-left: 0;
margin-right: 0;
}
.slider.slider-vertical .slider-tick-label-container {
white-space: nowrap;
}
.slider.slider-vertical .slider-tick-label-container .slider-tick-label {
padding-left: 4px;
}
.slider.slider-vertical .tooltip {
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
.slider.slider-vertical.slider-rtl .slider-track {
left: initial;
right: 25%;
}
.slider.slider-vertical.slider-rtl .slider-selection {
left: initial;
right: 0;
}
.slider.slider-vertical.slider-rtl .slider-tick.triangle,
.slider.slider-vertical.slider-rtl .slider-handle.triangle {
border-width: 10px 10px 10px 0;
}
.slider.slider-vertical.slider-rtl .slider-tick-label-container .slider-tick-label {
padding-left: initial;
padding-right: 4px;
}
.slider.slider-disabled .slider-handle {
background-image: -webkit-linear-gradient(top, #dfdfdf 0%, #bebebe 100%);
@ -104,11 +195,15 @@
.slider input {
display: none;
}
.slider .tooltip {
pointer-events: none;
}
.slider .tooltip.top {
margin-top: -36px;
}
.slider .tooltip-inner {
white-space: nowrap;
max-width: none;
}
.slider .hide {
display: none;
@ -139,21 +234,41 @@
box-sizing: border-box;
border-radius: 4px;
}
.slider-selection.tick-slider-selection {
background-image: -webkit-linear-gradient(top, #8ac1ef 0%, #82b3de 100%);
background-image: -o-linear-gradient(top, #8ac1ef 0%, #82b3de 100%);
background-image: linear-gradient(to bottom, #8ac1ef 0%, #82b3de 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef', endColorstr='#ff82b3de', GradientType=0);
}
.slider-track-low,
.slider-track-high {
position: absolute;
background: transparent;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
border-radius: 4px;
}
.slider-handle {
position: absolute;
top: 0;
width: 20px;
height: 20px;
background-color: #337ab7;
background-image: -webkit-linear-gradient(top, #149bdf 0%, #0480be 100%);
background-image: -o-linear-gradient(top, #149bdf 0%, #0480be 100%);
background-image: linear-gradient(to bottom, #149bdf 0%, #0480be 100%);
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
filter: none;
-webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05);
border: 0px solid transparent;
}
.slider-handle:hover {
cursor: pointer;
}
.slider-handle.round {
border-radius: 50%;
}
@ -169,3 +284,45 @@
content: '\2605';
color: #726204;
}
.slider-tick {
position: absolute;
cursor: pointer;
width: 20px;
height: 20px;
background-image: -webkit-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #f9f9f9 0%, #f5f5f5 100%);
background-image: linear-gradient(to bottom, #f9f9f9 0%, #f5f5f5 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff9f9f9', endColorstr='#fff5f5f5', GradientType=0);
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
filter: none;
opacity: 0.8;
border: 0px solid transparent;
}
.slider-tick.round {
border-radius: 50%;
}
.slider-tick.triangle {
background: transparent none;
}
.slider-tick.custom {
background: transparent none;
}
.slider-tick.custom::before {
line-height: 20px;
font-size: 20px;
content: '\2605';
color: #726204;
}
.slider-tick.in-selection {
background-image: -webkit-linear-gradient(top, #8ac1ef 0%, #82b3de 100%);
background-image: -o-linear-gradient(top, #8ac1ef 0%, #82b3de 100%);
background-image: linear-gradient(to bottom, #8ac1ef 0%, #82b3de 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff8ac1ef', endColorstr='#ff82b3de', GradientType=0);
opacity: 1;
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
<script type="text/javascript" src="laydate.js"></script>
</head>
<body>
<input type="text" placeholder="请选择日期" id="date_range">
<script>
laydate.render({
elem: '#date_range',
range: true
});
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -0,0 +1,45 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<!--
2013-9-30: Created.
-->
<svg>
<metadata>
Created by iconfont
</metadata>
<defs>
<font id="laydate-icon" horiz-adv-x="1024" >
<font-face
font-family="laydate-icon"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
ascent="896"
descent="-128"
/>
<missing-glyph />
<glyph glyph-name="x" unicode="x" horiz-adv-x="1001"
d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
<glyph glyph-name="youyou" unicode="&#58882;" d="M283.648 721.918976 340.873216 780.926976 740.352 383.997952 340.876288-12.925952 283.648 46.077952 619.52 383.997952Z" horiz-adv-x="1024" />
<glyph glyph-name="zuozuo" unicode="&#58883;" d="M740.352 721.918976 683.126784 780.926976 283.648 383.997952 683.123712-12.925952 740.352 46.077952 404.48 383.997952Z" horiz-adv-x="1024" />
<glyph glyph-name="xiayiye" unicode="&#58970;" d="M62.573 384.103l423.401 423.662c18.985 18.985 49.757 18.985 68.727 0 18.982-18.972 18.985-49.746 0-68.729l-355.058-355.067 356.796-356.796c18.977-18.971 18.976-49.746 0-68.727-18.982-18.976-49.751-18.976-68.727 0l-39.753 39.753 0.269 0.246-385.655 385.661zM451.365 384.103l423.407 423.662c18.985 18.985 49.757 18.985 68.727 0 18.982-18.972 18.985-49.746 0-68.729l-355.058-355.067 356.796-356.796c18.977-18.971 18.976-49.746 0-68.727-18.982-18.976-49.757-18.977-68.727 0l-39.762 39.754 0.273 0.249-385.662 385.661zM451.365 384.103z" horiz-adv-x="1024" />
<glyph glyph-name="xiayiye1" unicode="&#58971;" d="M948.066926 382.958838l-411.990051-412.24426c-18.47333-18.47333-48.417689-18.47333-66.875207 0-18.47333 18.461167-18.47333 48.405526 0 66.875207L814.691135 383.088983 467.512212 730.269123c-18.466032 18.458735-18.466032 48.405526 0 66.873991 18.468465 18.464816 48.410391 18.464816 66.872774 0l38.682336-38.682336-0.261507-0.239614 375.259894-375.265975v0.003649m-378.312834 0L157.756743-29.285422c-18.47333-18.47333-48.415256-18.47333-66.872775 0-18.47333 18.461167-18.47333 48.405526 0 66.875207L436.369787 383.088983 89.19208 730.269123c-18.4636 18.458735-18.4636 48.405526 0 66.873991 18.470898 18.464816 48.415256 18.464816 66.872774 0l38.692067-38.682336-0.266372-0.239614 375.267191-375.265975-0.004865 0.003649m0 0z" horiz-adv-x="1024" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
/* power by kodexplorer ver 4.36(2018-09-28) [build 1538149928.4009] */
/* power by kodexplorer ver 4.37(2018-11-28) [build 1543400682.6513] */
@import url('./fileIcon.css');
@import url('./common.css');
.frame-main{position:absolute;top:40px;width:100%;bottom:0px;}.frame-main .tools-left{background:#f8f8f8 url("../../../images/common/bg.gif") 0 0px;position:fixed;line-height:30px;padding-left:20px;height:28px;border-bottom:1px solid #ddd;left:0;width:100%;}.frame-main .tools-left a{font-size:1.25em;font-weight:800;text-decoration:none;color:#999;text-shadow:0 0 3px;display:inline-block;padding:2px 6px;margin-top:0;height:20px;line-height:20px;}.frame-main .tools-left a:hover{background:url("../../../images/common/buttons_40.png") 0 0px repeat-x;-webkit-box-shadow:0 2px 8px rgba(0,0,0,0.8);-moz-box-shadow:0 2px 8px rgba(0,0,0,0.8);box-shadow:0 2px 8px rgba(0,0,0,0.8);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}.frame-main .frame-left{position:absolute;left:0;top:30px;bottom:0;width:200px;background:#fff;background-attachment:fixed;overflow:auto;}.frame-main .frame-left .ztree{margin-top:0;}.frame-main .frame-left .ztree li.level0{margin-bottom:5px;}.frame-main .frame-resize{width:10px;cursor:col-resize;z-index:100;position:absolute;left:195px;top:0;bottom:0;overflow:hidden;background:url("../../../images/common/resize.png") 0px 50% no-repeat;}.frame-main .frame-resize.active{background:#000;opacity:0.2;filter:alpha(opacity=20);}.frame-main .frame-right{left:200px;right:0;position:absolute;top:0;bottom:0;overflow:auto;}.frame-main .frame-right .frame-right-main .resize-mask{z-index:999;position:absolute;left:0;top:0;bottom:0;right:0;display:none;}.frame-main .frame-right .frame-right-main .frame{height:100%;border-left:1px solid #ddd;overflow:hidden;}
/* ver 4.36(2018-09-28) [build 1538149928.4009] */
/* ver 4.37(2018-11-28) [build 1543400682.6514] */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long