Compare commits

...

38 Commits

Author SHA1 Message Date
kohgylw@163.com dbb335ca09 update to v1.0.35-release 2020-07-06 17:00:29 +08:00
kohgylw@163.com eaf74ae6c5 update to v1.0.34-release 2020-05-19 09:09:34 +08:00
kohgylw@163.com 2a81d74a51 update to v1.0.33-release 2020-05-18 11:39:00 +08:00
kohgylw@163.com 7e44880f93 update to v1.0.32-release 2020-05-18 08:31:02 +08:00
kohgylw@163.com 79e6f2a434 update to v1.0.32-release 2020-05-18 08:09:41 +08:00
kohgylw@163.com 9d104a2de9 update to v1.0.32-release 2020-05-17 19:45:47 +08:00
kohgylw@163.com 317b6bb50a update to v1.0.31-release 2020-05-15 21:40:45 +08:00
kohgylw@163.com ea59059f33 update to v1.0.31-release 2020-05-15 15:08:37 +08:00
kohgylw@163.com 5c19709a2d update to v1.0.31-release 2020-05-15 11:14:33 +08:00
kohgylw@163.com 00817287c8 update to v1.0.30-release 2020-05-14 11:40:11 +08:00
kohgylw@163.com 077c3150fa update to v1.0.29-release 2020-05-13 17:17:40 +08:00
kohgylw@163.com 4f5d0e377b update to v1.0.29-release 2020-05-12 18:45:30 +08:00
kohgylw@163.com 8b7a235b25 update to v1.0.29-release 2020-05-12 15:36:09 +08:00
kohgylw@163.com 18cfba5249 update to v1.0.29-release 2020-05-12 14:44:50 +08:00
kohgylw@163.com de84f1885c update to v1.0.29-release 2020-05-12 10:45:50 +08:00
kohgylw@163.com cbc838895d update to v1.0.29-release 2020-05-07 17:22:36 +08:00
kohgylw@163.com 2b5d2152e6 update to v1.0.29-release 2020-05-07 15:02:29 +08:00
kohgylw@163.com 54018d6e7b update to v1.0.28-release 2020-02-09 11:07:50 +08:00
kohgylw@163.com ab12390b51 update to v1.0.28-release 2020-02-09 09:23:04 +08:00
kohgylw@163.com 5ba01aaebc update to v1.0.28-release 2020-02-09 09:07:11 +08:00
kohgylw@163.com 23ef3fd95c update to v1.0.28-release 2020-02-08 17:32:41 +08:00
kohgylw@163.com 9c3ab72d57 update to v1.0.28-release 2020-02-08 17:24:26 +08:00
kohgylw@163.com 5a55a2937d update to v1.0.28-release 2020-02-07 17:30:45 +08:00
kohgylw@163.com 21319d7e34 update to v1.0.27-release 2020-02-02 11:07:59 +08:00
kohgylw@163.com b9c332d48d update to v1.0.27-release 2020-02-02 10:40:28 +08:00
kohgylw@163.com 68bae3d79d update to v1.0.27-release 2020-02-01 16:28:39 +08:00
kohgylw@163.com 1a3ca0b9ab update to v1.0.27-release 2020-02-01 08:30:23 +08:00
kohgylw@163.com 57eeb3164c update to v1.0.27-release 2020-01-21 15:34:26 +08:00
kohgylw@163.com efd8d991ff update to v1.0.27-release 2020-01-21 11:42:47 +08:00
kohgylw 67322caf88 update to v1.0.27-release 2020-01-14 15:35:05 +08:00
kohgylw 8b4952bb83 update to v1.0.27-release 2020-01-14 11:18:43 +08:00
kohgylw 38eb22c742 update to v1.0.26-release 2019-10-27 09:52:47 +08:00
kohgylw 07a1c8f175 update to v1.0.25-release 2019-10-12 11:32:36 +08:00
kohgylw 642e9a0e8b update to v1.0.24-release 2019-10-09 16:09:03 +08:00
kohgylw 2bcc6e7a7f update to v1.0.23 2019-10-08 11:43:35 +08:00
kohgylw c54fd6b0ea v1.0.23-release 2019-10-08 10:16:07 +08:00
kohgylw 690805759d update to v1.0.22-release 2019-09-02 16:56:05 +08:00
kohgylw 08b6d9ccd2 update to v1.0.21-release 2019-08-28 19:23:22 +08:00
28 changed files with 2914 additions and 1313 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -10,7 +10,7 @@
## 快速导航 ## 快速导航
* 访问kiftd官方主页来快速了解kiftd -- [kiftd官方主页](https://kohgylw.gitee.io/) * 访问kiftd官方主页来快速了解kiftd -- [kiftd官方主页](https://kohgylw.gitee.io/)
* 国内托管地址——腾讯开发者平台上的项目主页https://dev.tencent.com/u/kohgylw/p/kiftd/git -- [点击下载](https://dev.tencent.com/u/kohgylw/p/kiftd/git/archive/master) * 国内托管地址——阿里云上的项目主页https://code.aliyun.com/kohgylw/kiftd/tree/master -- [点击下载](https://code.aliyun.com/kohgylw/kiftd/repository/archive.zip?ref=master)
* 国内托管地址——码云上的项目主页: https://gitee.com/kohgylw/kiftd -- [点击下载](https://gitee.com/kohgylw/kiftd/repository/archive/master.zip) * 国内托管地址——码云上的项目主页: https://gitee.com/kohgylw/kiftd -- [点击下载](https://gitee.com/kohgylw/kiftd/repository/archive/master.zip)
* 国际托管地址——github上的项目主页 https://github.com/KOHGYLW/kiftd -- [点击下载](https://github.com/KOHGYLW/kiftd/archive/master.zip) * 国际托管地址——github上的项目主页 https://github.com/KOHGYLW/kiftd -- [点击下载](https://github.com/KOHGYLW/kiftd/archive/master.zip)
@ -64,8 +64,8 @@ _注kift为该功能的开发名称其实际成果命名为kiftd。_
### 现在您只需抽出3分钟时间就可以立即体验这款专业快捷的网盘服务器了。 ### 现在您只需抽出3分钟时间就可以立即体验这款专业快捷的网盘服务器了。
* 马上下载本网盘服务器请点击右上方绿色按钮“Clone or Download”之后选择“Download ZIP”进行下载Github,也可以前往国内托管的下载地址: https://gitee.com/kohgylw/kiftd (码云) * 马上下载本网盘服务器请点击右上方绿色按钮“Clone or Download”之后选择“Download ZIP”进行下载Github,也可以前往国内托管的下载地址: https://gitee.com/kohgylw/kiftd (码云)或 https://code.aliyun.com/kohgylw/kiftd/tree/master (阿里云)
* 想要开始使用您应该从阅读《kiftd说明文档》开始这是一份十分全面的官方介绍文档简单易懂且图文并茂相信您能很快学会它。想在线阅读请直接点击上方文件列表中的《kiftd说明文档》来在线预览该操作仅GitHub有效 * 想要开始使用您应该从阅读《kiftd说明文档》开始这是一份十分全面的官方介绍文档简单易懂且图文并茂相信您能很快学会它。想在线阅读请直接点击上方文件列表中的《kiftd说明文档》来在线预览该操作仅GitHub有效
* 立刻获取源代码请访问本应用代码托管地址https://github.com/KOHGYLW/kiftd-source Github * 立刻获取源代码请访问本应用代码托管地址https://github.com/KOHGYLW/kiftd-source Github
* 使用中遇到问题?请将您的发现提交到 https://github.com/KOHGYLW/kiftd/issues (Github) * 使用中遇到问题?请将您的发现提交到 https://github.com/KOHGYLW/kiftd/issues (Github)
* 需要联系作者?请立即发件至 kohgylw@163.com ,描述您所遇到的任何问题 * 需要联系作者?请立即发件至 kohgylw@163.com ,描述您所遇到的任何问题
@ -77,15 +77,11 @@ _注kift为该功能的开发名称其实际成果命名为kiftd。_
> 提示:当您更新版本后,请手动清除浏览器的缓存,之后刷新网盘主页以确保数据文件保持最新!否则可能导致新版页面功能无法使用。 > 提示:当您更新版本后,请手动清除浏览器的缓存,之后刷新网盘主页以确保数据文件保持最新!否则可能导致新版页面功能无法使用。
### 新版本v1.0.20 ### 常规更新v1.0.35
_本次更新增加了较多用户们一直期待的、实用性较强的新功能进一步增强kiftd的使用体验。推荐所有用户升级体验。_ _本次更新为维护性的更新修复一些已经发现的问题并优化使用体验推荐所有用户升级。_
+ 文件夹上传——现在众多用户期待已久的上传文件夹功能现已上线。当用户同时具备“上传”和“新建文件夹”权限时便可使用该功能进行文件夹的上传同时还可以像新建文件夹一样自由设置上传后的文件夹的访问级别。详情请见《kiftd说明文档》。 + 修复了当用户执行批量上传操作时,中途切换所在的文件夹可能会导致上传路径发生改变的问题。
+ PPT预览功能——现在众多用户期待已久的PPT文档在线预览功能正式上线方便办公使用。PPT预览功能提供ppt和pptx格式的在线打开和预览且该功能无需额外安装任何插件可免费用于商业用途。注在线预览无法显示动画效果部分复杂内容可能与官方PPT版式有所差异。 + 升级了内置的MySQL数据库驱动的版本。
+ 添加扩展存储区——现在kiftd的文件系统允许用户额外添加最多31个“扩展存储区”路径。这些“扩展存储区”能够设置在不同的硬盘分区中并分担“主文件系统存储区”的存储压力从而方便用户在不借助硬盘阵列技术的前提下使用多块硬盘来进一步扩展kiftd的可用容量。详情请见《kiftd说明文档》。
+ 升级了文件列表的排序功能——文件列表现在可以对文件的各项属性进行切换式的双向(升序/降序)排序。
+ 优化文件列表的显示顺序——文件列表现在将按照上传的时间由新至旧向下排列显示,更加贴合用户的查看习惯。
+ 优化配置检查机制——当配置出现错误后系统将不再自动还原初配置文件,以便用户根据提示信息进行检查和修改。
+ 进一步提高了文件系统的安全性和稳定性。
> 需要查看更多版本历史信息?请访问: https://kohgylw.gitee.io/News.html > 需要查看更多版本历史信息?请访问: https://kohgylw.gitee.io/News.html
@ -128,4 +124,4 @@ _本次更新增加了较多用户们一直期待的、实用性较强的新功
_作者会每隔1-3周浏览一次邮箱如未能及时回复请耐心等待。回复或许会迟到但它不会缺席。_ _作者会每隔1-3周浏览一次邮箱如未能及时回复请耐心等待。回复或许会迟到但它不会缺席。_
2018-09-29 kohgylw@青阳龙野 作者保留版权 2018-2020 kohgylw@青阳龙野 作者保留版权

BIN
filesystem/.DS_Store vendored

Binary file not shown.

Binary file not shown.

BIN
kiftd-1.0.35-RELEASE.jar Normal file

Binary file not shown.

Binary file not shown.

BIN
libs/flexmark-0.50.44.jar Normal file

Binary file not shown.

Binary file not shown.

View File

@ -13,18 +13,35 @@
<select id="queryById" parameterType="java.lang.String" <select id="queryById" parameterType="java.lang.String"
resultMap="BaseResultMap"> resultMap="BaseResultMap">
SELECT * FROM FOLDER WHERE folder_id = #{fid,jdbcType=VARCHAR} SELECT * FROM FOLDER WHERE folder_id =
#{fid,jdbcType=VARCHAR}
</select> </select>
<select id="queryByParentId" parameterType="java.lang.String" <select id="queryByParentId" parameterType="java.lang.String"
resultMap="BaseResultMap"> resultMap="BaseResultMap">
SELECT * FROM FOLDER WHERE folder_parent = #{pid,jdbcType=VARCHAR} SELECT * FROM FOLDER WHERE folder_parent =
#{pid,jdbcType=VARCHAR} LIMIT 0,2147483647
</select>
<select id="countByParentId" parameterType="java.lang.String"
resultType="java.lang.Long">
SELECT COUNT(folder_id) FROM FOLDER WHERE folder_parent =
#{pid,jdbcType=VARCHAR}
</select>
<select id="queryByParentIdSection" parameterType="java.util.Map"
resultMap="BaseResultMap">
SELECT * FROM FOLDER WHERE folder_parent =
#{pid,jdbcType=VARCHAR} LIMIT
#{offset,jdbcType=INTEGER},#{rows,jdbcType=INTEGER}
</select> </select>
<select id="queryByParentIdAndFolderName" parameterType="java.util.Map" <select id="queryByParentIdAndFolderName" parameterType="java.util.Map"
resultMap="BaseResultMap"> resultMap="BaseResultMap">
SELECT * FROM FOLDER WHERE folder_parent = #{parentId,jdbcType=VARCHAR} AND SELECT * FROM FOLDER WHERE folder_parent =
folder_name = #{folderName,jdbcType=VARCHAR} #{parentId,jdbcType=VARCHAR} AND
folder_name =
#{folderName,jdbcType=VARCHAR}
</select> </select>
<insert id="insertNewFolder" parameterType="kohgylw.kiftd.server.model.Folder"> <insert id="insertNewFolder" parameterType="kohgylw.kiftd.server.model.Folder">
@ -33,23 +50,39 @@
</insert> </insert>
<delete id="deleteById" parameterType="java.lang.String"> <delete id="deleteById" parameterType="java.lang.String">
DELETE FROM FOLDER WHERE folder_id=#{folderId,jdbcType=VARCHAR} DELETE FROM FOLDER WHERE
folder_id=#{folderId,jdbcType=VARCHAR}
</delete> </delete>
<update id="updateFolderNameById" parameterType="java.util.Map"> <update id="updateFolderNameById" parameterType="java.util.Map">
UPDATE FOLDER SET folder_name = #{newName,jdbcType=VARCHAR} WHERE folder_id UPDATE FOLDER
= #{folderId,jdbcType=VARCHAR} SET folder_name = #{newName,jdbcType=VARCHAR} WHERE folder_id
=
#{folderId,jdbcType=VARCHAR}
</update> </update>
<update id="updateFolderConstraintById" parameterType="java.util.Map"> <update id="updateFolderConstraintById" parameterType="java.util.Map">
UPDATE FOLDER SET folder_constraint = #{newConstraint,jdbcType=INTEGER} WHERE folder_id UPDATE
FOLDER SET folder_constraint = #{newConstraint,jdbcType=INTEGER} WHERE
folder_id
= #{folderId,jdbcType=VARCHAR} = #{folderId,jdbcType=VARCHAR}
</update> </update>
<update id="moveById" parameterType="java.util.Map"> <update id="moveById" parameterType="java.util.Map">
UPDATE FOLDER SET UPDATE FOLDER SET
folder_parent = #{locationpath,jdbcType=VARCHAR} WHERE folder_id = folder_parent = #{locationpath,jdbcType=VARCHAR} WHERE folder_id =
#{folderId,jdbcType=VARCHAR} #{folderId,jdbcType=VARCHAR}
</update> </update>
<update id="update" parameterType="kohgylw.kiftd.server.model.Folder">
UPDATE FOLDER SET folder_name
=
#{folderName,jdbcType=VARCHAR},folder_creation_date =
#{folderCreationDate,jdbcType=VARCHAR},folder_creator =
#{folderCreator,jdbcType=VARCHAR},folder_parent =
#{folderParent,jdbcType=VARCHAR},folder_constraint =
#{folderConstraint,jdbcType=INTEGER} WHERE folder_id =
#{folderId,jdbcType=VARCHAR}
</update>
</mapper> </mapper>

View File

@ -16,6 +16,19 @@
<select id="queryByParentFolderId" parameterType="java.lang.String" <select id="queryByParentFolderId" parameterType="java.lang.String"
resultMap="BaseResultMap"> resultMap="BaseResultMap">
SELECT * FROM FILE WHERE file_parent_folder = SELECT * FROM FILE WHERE file_parent_folder =
#{pfid,jdbcType=VARCHAR} LIMIT 0,2147483647
</select>
<select id="queryByParentFolderIdSection" parameterType="java.util.Map"
resultMap="BaseResultMap">
SELECT * FROM FILE WHERE file_parent_folder =
#{pfid,jdbcType=VARCHAR} LIMIT
#{offset,jdbcType=INTEGER},#{rows,jdbcType=INTEGER}
</select>
<select id="countByParentFolderId" parameterType="java.lang.String"
resultType="java.lang.Long">
SELECT COUNT(file_id) FROM FILE WHERE file_parent_folder =
#{pfid,jdbcType=VARCHAR} #{pfid,jdbcType=VARCHAR}
</select> </select>
@ -57,14 +70,17 @@
#{fileId,jdbcType=VARCHAR} #{fileId,jdbcType=VARCHAR}
</update> </update>
<select id="queryAll" resultMap="BaseResultMap">
SELECT * FROM FILE
</select>
<select id="queryByPath" parameterType="java.lang.String" <select id="queryByPath" parameterType="java.lang.String"
resultMap="BaseResultMap"> resultMap="BaseResultMap">
SELECT * FROM FILE WHERE file_path = SELECT * FROM FILE WHERE file_path =
#{path,jdbcType=VARCHAR} #{path,jdbcType=VARCHAR} LIMIT 0,2147483647
</select>
<select id="queryByPathExcludeById" parameterType="java.util.Map"
resultMap="BaseResultMap">
SELECT * FROM FILE WHERE file_path =
#{path,jdbcType=VARCHAR} AND file_id &lt;&gt;
#{fileId,jdbcType=VARCHAR} LIMIT 0,2147483647
</select> </select>
<select id="queryBySomeFolder" parameterType="java.lang.String" <select id="queryBySomeFolder" parameterType="java.lang.String"
@ -72,13 +88,7 @@
SELECT * FROM FILE WHERE file_parent_folder in (SELECT SELECT * FROM FILE WHERE file_parent_folder in (SELECT
file_parent_folder file_parent_folder
FROM FILE WHERE file_id = FROM FILE WHERE file_id =
#{fileId,jdbcType=VARCHAR}) #{fileId,jdbcType=VARCHAR}) LIMIT 0,2147483647
</select> </select>
<update id="moveById" parameterType="java.util.Map">
UPDATE FILE SET
file_parent_folder = #{locationpath,jdbcType=VARCHAR} WHERE file_id =
#{fileId,jdbcType=VARCHAR}
</update>
</mapper> </mapper>

View File

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="kohgylw.kiftd.server.mapper.PropertiesMapper">
<resultMap id="BaseResultMap" type="kohgylw.kiftd.server.model.Propertie">
<id column="propertie_key" jdbcType="VARCHAR" property="propertieKey" />
<result column="propertie_value" jdbcType="VARCHAR" property="propertieValue" />
</resultMap>
<insert id="insert" parameterType="kohgylw.kiftd.server.model.Propertie">
INSERT INTO PROPERTIES
VALUES(#{propertieKey,jdbcType=VARCHAR},#{propertieValue,jdbcType=VARCHAR})
</insert>
<update id="update" parameterType="kohgylw.kiftd.server.model.Propertie">
UPDATE PROPERTIES SET propertie_value =
#{propertieValue,jdbcType=VARCHAR} WHERE propertie_key =
#{propertieKey,jdbcType=VARCHAR}
</update>
<delete id="deleteByKey" parameterType="java.lang.String">
DELETE FROM PROPERTIES WHERE
propertie_key = #{propertieKey,jdbcType=VARCHAR}
</delete>
<select id="selectByKey" parameterType="java.lang.String"
resultMap="BaseResultMap">
SELECT * FROM PROPERTIES WHERE propertie_key =
#{propertieKey,jdbcType=VARCHAR}
</select>
</mapper>

View File

@ -96,6 +96,21 @@ body {
opacity: 0.7; opacity: 0.7;
} }
.shownoticebox {
width: 40px;
height: 75px;
position: fixed;
top: 50px;
right: 0px;
}
.shownoticebutton {
width: 100%;
height: 100%;
background-color: #FCFCFC;
color: #104E8B; alpha (Opacity=70);
}
td { td {
word-break: break-all; word-break: break-all;
word-wrap: break-all; word-wrap: break-all;
@ -105,4 +120,14 @@ td {
width: 100%; width: 100%;
max-height: 35px; max-height: 35px;
cursor: pointer cursor: pointer
}
.loadingremaininngbox {
width: 100%;
height: 40px;
position: fixed;
bottom: 0px;
left: 0px;
line-height: 40px;
color: #104E8B; alpha (Opacity=70);
} }

View File

@ -1 +1 @@
@charset "UTF-8";.titlebox{height:30px;line-height:30px;padding-top:5px;padding-bottom:5px;padding-left:10px;padding-right:10px;position:relative;bottom:-7px}.titletext{color:#000;font-size:22px}.graytext{color:#8b8b8b}.subtitle{color:#5cacee;text-align:center}.rightbtn{border-right:10px;float:right;margin-left:10px}.heading{margin-top:-10px;margin-bottom:-10px}.centerText{text-align:center}.uploadstatusbox{color:#9c9c9c;height:48px;overflow:auto}html{height:100%}body{height:100%}.loading{line-height:56px;color:#545454;padding-left:60px;font-size:15px;background:#fff url(loading.gif) no-repeat 10px 50%;opacity:.7;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;filter:alpha(opacity=70)}.wordbreak{word-break:break-all}.filetableheaderstyle{height:40px;float:left;height:100%;margin-top:15px;overflow:hidden}.gobacktopbox{width:100%;height:30px;position:fixed;top:0;left:0}.gobacktopbutton{width:150px;height:35px;background-color:#fcfcfc;color:#104e8b;alpha(Opacity=70);-moz-opacity:.7;opacity:.7}td{word-break:break-all;word-wrap:break-all}.vercodeimg{width:100%;max-height:35px;cursor:pointer} @charset "UTF-8";.titlebox{height:30px;line-height:30px;padding-top:5px;padding-bottom:5px;padding-left:10px;padding-right:10px;position:relative;bottom:-7px}.titletext{color:#000;font-size:22px}.graytext{color:#8b8b8b}.subtitle{color:#5cacee;text-align:center}.rightbtn{border-right:10px;float:right;margin-left:10px}.heading{margin-top:-10px;margin-bottom:-10px}.centerText{text-align:center}.uploadstatusbox{color:#9c9c9c;height:48px;overflow:auto}html{height:100%}body{height:100%}.loading{line-height:56px;color:#545454;padding-left:60px;font-size:15px;background:#fff url(loading.gif) no-repeat 10px 50%;opacity:.7;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;filter:alpha(opacity=70)}.wordbreak{word-break:break-all}.filetableheaderstyle{height:40px;float:left;height:100%;margin-top:15px;overflow:hidden}.gobacktopbox{width:100%;height:30px;position:fixed;top:0;left:0}.gobacktopbutton{width:150px;height:35px;background-color:#fcfcfc;color:#104e8b;alpha(Opacity=70);-moz-opacity:.7;opacity:.7}.shownoticebox{width:40px;height:75px;position:fixed;top:50px;right:0}.shownoticebutton{width:100%;height:100%;background-color:#fcfcfc;color:#104e8b;alpha(Opacity=70)}td{word-break:break-all;word-wrap:break-all}.vercodeimg{width:100%;max-height:35px;cursor:pointer}.loadingremaininngbox{width:100%;height:40px;position:fixed;bottom:0;left:0;line-height:40px;color:#104e8b;alpha(Opacity=70)}

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,7 @@
<!doctype html> <!doctype html>
<!-- kiftd 主页面 by 青阳龙野 --> <!-- 青阳网络文件传输系统 kiftd v1.0.35-RELEASE -->
<!-- 欢迎访问主界面 -->
<!-- by 青阳龙野kohgylw@163.com -->
<html> <html>
<head> <head>
<base href="/"> <base href="/">
@ -38,8 +40,9 @@
class="graytext">KIFT</span> class="graytext">KIFT</span>
</small> </small>
</em> </em>
</span> <span id="tb" class="rightbtn"></span> </span> <span id="tb" class="rightbtn hidden-xs"></span>
<button class="btn btn-link rightbtn" onclick="refreshFolderView()"> <button class="btn btn-link rightbtn hidden-xs"
onclick="refreshFolderView()">
刷新 <span class="glyphicon glyphicon-repeat" aria-hidden="true"></span> 刷新 <span class="glyphicon glyphicon-repeat" aria-hidden="true"></span>
</button> </button>
</div> </div>
@ -49,7 +52,7 @@
<!-- 信息栏、操作栏与文件列表 --> <!-- 信息栏、操作栏与文件列表 -->
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<p id="vicetbbox" class="subtitle" style="display: none;"> <p class="subtitle visible-xs-block">
<span id="tb2"></span> <span id="tb2"></span>
<button class="btn btn-link" onclick="refreshFolderView()"> <button class="btn btn-link" onclick="refreshFolderView()">
刷新 <span class="glyphicon glyphicon-repeat" aria-hidden="true"></span> 刷新 <span class="glyphicon glyphicon-repeat" aria-hidden="true"></span>
@ -81,13 +84,12 @@
class="caret"></span></a> class="caret"></span></a>
<ul class="dropdown-menu" id="parentFolderList"></ul></li> <ul class="dropdown-menu" id="parentFolderList"></ul></li>
</ul> </ul>
<form id="filetableoptmenusreach" <form class="navbar-form navbar-left hidden-xs">
class="navbar-form navbar-left">
<div class="form-group"> <div class="form-group">
<input id="sreachKeyWordIn" type="text" class="form-control" <input id="sreachKeyWordIn" type="text" class="form-control"
placeholder="请输入文件名..."> placeholder="请输入文件名...">
</div> </div>
<button type="button" class="btn btn-default" <button id="searchbtn" type="button" class="btn btn-default"
onclick="doSearchFile()">搜索</button> onclick="doSearchFile()">搜索</button>
</form> </form>
<ul class="nav navbar-nav navbar-right"> <ul class="nav navbar-nav navbar-right">
@ -99,23 +101,34 @@
class="glyphicon glyphicon-cog"></span> 操作 <span class="glyphicon glyphicon-cog"></span> 操作 <span
class="caret"></span></a> class="caret"></span></a>
<ul class="dropdown-menu" id="fileListDropDown"> <ul class="dropdown-menu" id="fileListDropDown">
<li id="uploadFileButtonLi"><a>上传文件 <span <li id="uploadFileButtonLi"><a
class="pull-right"><span href="javascript:void(0);">上传文件 <span class="pull-right"><span
class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>+U</span></a></li> class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>+U</span></a></li>
<li id="uploadFolderButtonLi"><a>上传文件夹 <span <li id="uploadFolderButtonLi"><a
href="javascript:void(0);">上传文件夹 <span
class="pull-right"><span class="pull-right"><span
class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>+F</span></a></li> class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>+F</span></a></li>
<li role="separator" class="divider"></li> <li role="separator" class="divider"></li>
<li id="createFolderButtonLi"><a>新建文件夹 <span <li id="createFolderButtonLi"><a
href="javascript:void(0);">新建文件夹 <span
class="pull-right"><span class="pull-right"><span
class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>+N</span></a></li> class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>+N</span></a></li>
<li role="separator" class="divider"></li> <li role="separator" class="divider"></li>
<li id="cutFileButtonLi"><a><span id='cutSignTx'>剪切 <li id="copyFileButtonLi"><a href="javascript:void(0);"><span
<span class="pull-right"><span id='copySignTx'>复制 <span class="pull-right"><span
class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>+C</span> class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>+C</span>
</span></a></li> </span></a></li>
<li id="deleteSeelectFileButtonLi"><a>删除 <span <li id="cutFileButtonLi"><a href="javascript:void(0);"><span
class="pull-right"><span id='cutSignTx'>剪切 <span class="pull-right"><span
class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>+X</span>
</span></a></li>
<li id="stickFileButtonLi" class="hidden"><a
href="javascript:void(0);"><span id='stickSignTx'>粘贴<span
id="stickFilesCount"></span> <span class="pull-right"><span
class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>+V</span>
</span></a></li>
<li id="deleteSeelectFileButtonLi"><a
href="javascript:void(0);">删除 <span class="pull-right"><span
class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>+D</span></a></li> class="glyphicon glyphicon-arrow-up" aria-hidden="true"></span>+D</span></a></li>
</ul></li> </ul></li>
</ul> </ul>
@ -127,13 +140,14 @@
<tr> <tr>
<th onclick="sortbyfn()">文件名<span id="sortByFN" <th onclick="sortbyfn()">文件名<span id="sortByFN"
aria-hidden="true" style="float: right"></span></th> aria-hidden="true" style="float: right"></span></th>
<th class="hiddenColumn" onclick="sortbycd()">创建日期<span <th class="hidden-xs" onclick="sortbycd()">创建日期<span
id="sortByCD" aria-hidden="true" style="float: right"></span></th> id="sortByCD" aria-hidden="true" style="float: right"></span></th>
<th onclick="sortbyfs()">大小<span id="sortByFS" <th onclick="sortbyfs()">大小<span id="sortByFS"
aria-hidden="true" style="float: right"></span></th> aria-hidden="true" style="float: right"></span></th>
<th class="hiddenColumn" onclick="sortbycn()">创建者<span <th class="hidden-xs" onclick="sortbycn()">创建者<span
id="sortByCN" aria-hidden="true" style="float: right"></span></th> id="sortByCN" aria-hidden="true" style="float: right"></span></th>
<th onclick="showOriginFolderView()">操作</th> <th onclick="showOriginFolderView()">操作<span id="sortByOR"
aria-hidden="true" style="float: right"></span></th>
</tr> </tr>
</thead> </thead>
<tbody id="foldertable"></tbody> <tbody id="foldertable"></tbody>
@ -281,7 +295,8 @@
<h5 id="deleteFolderMessage"></h5> <h5 id="deleteFolderMessage"></h5>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button> <button id="cancelDeleteFolderBtn" type="button"
class="btn btn-default" data-dismiss="modal">取消</button>
<span id="deleteFolderBox"></span> <span id="deleteFolderBox"></span>
</div> </div>
</div> </div>
@ -428,9 +443,9 @@
onclick="checkimportpath()" onfocus="this.blur()" onclick="checkimportpath()" onfocus="this.blur()"
placeholder="请点击选择要上传的文件夹……" folderConstraintLevel="0"> placeholder="请点击选择要上传的文件夹……" folderConstraintLevel="0">
<div class="input-group-btn"> <div class="input-group-btn">
<button id="importFolderLevelBtn" type="button" class="btn btn-default dropdown-toggle" <button id="importFolderLevelBtn" type="button"
data-toggle="dropdown" aria-haspopup="true" class="btn btn-default dropdown-toggle" data-toggle="dropdown"
aria-expanded="false"> aria-haspopup="true" aria-expanded="false">
&nbsp;<span id="importfoldertype">公开的</span>&nbsp;<span &nbsp;<span id="importfoldertype">公开的</span>&nbsp;<span
class="caret"></span> class="caret"></span>
</button> </button>
@ -440,7 +455,8 @@
</div> </div>
</div> </div>
<input type="file" id="importfolder" style="display: none;" <input type="file" id="importfolder" style="display: none;"
onchange="getInputImport()" multiple="multiple" webkitdirectory> onchange="getInputImport()" multiple="multiple"
webkitdirectory="true">
<h5> <h5>
上传进度:<span id="importcount"></span> 上传进度:<span id="importcount"></span>
</h5> </h5>
@ -466,8 +482,7 @@
</p> </p>
<p> <p>
<button id="importcoverbtn" type="button" <button id="importcoverbtn" type="button"
class="btn btn-danger btn-sm" class="btn btn-danger btn-sm" onclick="importAndCover()">覆盖</button>
onclick="importAndCover()">覆盖</button>
<button type="button" class="btn btn-default btn-sm" <button type="button" class="btn btn-default btn-sm"
onclick="abortImport()">取消上传</button> onclick="abortImport()">取消上传</button>
<button type="button" class="btn btn-default btn-sm" <button type="button" class="btn btn-default btn-sm"
@ -476,7 +491,8 @@
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-default" onclick='abortImport()'>取消</button> <button type="button" class="btn btn-default"
onclick='abortImport()'>取消</button>
<button id="importbutton" type='button' class='btn btn-primary' <button id="importbutton" type='button' class='btn btn-primary'
onclick='checkImportFolder()'>开始上传</button> onclick='checkImportFolder()'>开始上传</button>
</div> </div>
@ -532,7 +548,8 @@
<h5 id="deleteFileMessage" class="wordbreak"></h5> <h5 id="deleteFileMessage" class="wordbreak"></h5>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button> <button id="cancelDeleteFileBox" type="button"
class="btn btn-default" data-dismiss="modal">取消</button>
<span id="deleteFileBox"></span> <span id="deleteFileBox"></span>
</div> </div>
</div> </div>
@ -596,7 +613,8 @@
</h5> </h5>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button> <button id="cancelDownloadAllCheckedBtn" type="button"
class="btn btn-default" data-dismiss="modal">取消</button>
<span id="downloadAllCheckedBox"></span> <span id="downloadAllCheckedBox"></span>
</div> </div>
</div> </div>
@ -685,7 +703,8 @@
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button> <button id="cancelMoveFilesBtn" type="button"
class="btn btn-default" data-dismiss="modal">取消</button>
<span id="moveFilesBox"></span> <span id="moveFilesBox"></span>
</div> </div>
</div> </div>
@ -714,6 +733,8 @@
<dd id="fim_folderCreationDate"></dd> <dd id="fim_folderCreationDate"></dd>
<dt>文件统计:</dt> <dt>文件统计:</dt>
<dd id="fim_statistics"></dd> <dd id="fim_statistics"></dd>
<dt>文件夹ID</dt>
<dd id="fim_folderId"></dd>
</dl> </dl>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
@ -723,6 +744,119 @@
</div> </div>
</div> </div>
<!-- end 文件夹详情模态框 --> <!-- end 文件夹详情模态框 -->
<!-- 修改密码模态框 -->
<div class="modal fade bs-example-modal-sm" id="changePasswordModal"
tabindex="-1" role="dialog" aria-labelledby="changePasswordModelTitle">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="changePasswordModelTitle">
<span class="glyphicon glyphicon-edit"></span> 修改密码
</h4>
</div>
<div class="modal-body">
<form class="form-horizontal">
<div class="form-group" id="changepassword_oldepwdbox">
<label for="changepassword_oldpwd"
id="changepassword_oldpwdtitle" class="col-sm-3 control-label">旧密码:</label>
<div class="col-sm-9">
<input type="password" class="form-control"
id="changepassword_oldpwd" placeholder="请输入旧密码确认身份……">
</div>
</div>
<div class="form-group" id="changepassword_newpwdbox">
<label for="changepassword_newpwd"
id="changepassword_newpwdtitle" class="col-sm-3 control-label">新密码:</label>
<div class="col-sm-9">
<input type="password" class="form-control"
id="changepassword_newpwd" placeholder="请输入新密码……">
</div>
</div>
<div class="form-group" id="changepassword_reqnewpwdbox">
<label for="changepassword_reqnewpwd"
id="changepassword_reqnewpwdtitle"
class="col-sm-3 control-label">确认新密码:</label>
<div class="col-sm-9">
<input type="password" class="form-control"
id="changepassword_reqnewpwd" placeholder="请再次输入新密码……">
</div>
</div>
<div id="changepassword_vccodebox" class="form-group"></div>
<div id="changepasswordalertbox" class="alert alert-danger"
role="alert"></div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
<button type="button" id="changePasswordButton"
class="btn btn-danger" onclick="doChangePassword()">立即修改</button>
</div>
</div>
</div>
</div>
<!-- end 改密 -->
<!-- 永久资源链接显示模态框 -->
<div class="modal fade" id="fileChainModal" tabindex="-1" role="dialog"
aria-labelledby="chainModalLabel">
<div class="modal-dialog modal-sm" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="chainModalLabel">
<span class="glyphicon glyphicon-link"></span> 资源链接
</h4>
</div>
<div class="modal-body">
<textarea id="fileChainTextarea" class="form-control" rows="3"
readonly></textarea>
</div>
<div class="modal-footer">
<button id="copyChainBtn" type="button" class="btn btn-info"
onclick="copyFileChain()">复制链接</button>
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
</div>
</div>
</div>
</div>
<!-- end 永久资源链接 -->
<!-- 公告信息栏 -->
<div class="modal fade" id="noticeModal" tabindex="-1" role="dialog"
aria-labelledby="noticeModalLabel">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="noticeModalLabel">公告信息</h4>
</div>
<div class="modal-body" style="overflow: scroll;"
id="noticeModalBody"></div>
<div class="modal-footer">
<label class="text-muted"> <input type="checkbox"
id="dontShowSomeNoticeAt30Day"> 30天内不再显示相同的公告信息
</label>
<button type="button" class="btn btn-primary" data-dismiss="modal">关闭</button>
</div>
</div>
</div>
</div>
<!-- end 公告信息栏 -->
<!-- 显示公告按钮 -->
<div id="shownoticebox" class="shownoticebox text-center hidden">
<button type="button" onclick="showNotice()" class="shownoticebutton">
<span class="glyphicon glyphicon-bookmark" aria-hidden="true"></span><br /><br />
</button>
</div>
<!-- end 显示公告按钮 -->
<!-- 返回顶部按钮(隐藏式) --> <!-- 返回顶部按钮(隐藏式) -->
<div id="gobacktotopbox" class="gobacktopbox text-center hidden"> <div id="gobacktotopbox" class="gobacktopbox text-center hidden">
<button type="button" onclick="goBackToTop()" class="gobacktopbutton"> <button type="button" onclick="goBackToTop()" class="gobacktopbutton">
@ -730,6 +864,13 @@
</button> </button>
</div> </div>
<!-- end 返回顶部按钮 --> <!-- end 返回顶部按钮 -->
<!-- 加载余下部分的提示 -->
<div id="loadingremaininngbox"
class="loadingremaininngbox text-center bg-info hidden">
正在加载文件列表:<span id="loadingrate">0%</span>... <span
class="glyphicon glyphicon-hourglass" aria-hidden="true"></span>
</div>
<!-- end 加载余下部分的提示 -->
</body> </body>
<!-- jquery基本框架 --> <!-- jquery基本框架 -->
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script> <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -16,6 +16,23 @@ $(function() {
$("#vercodebox").addClass("hidden"); $("#vercodebox").addClass("hidden");
// 打开页面自动聚焦账户输入框 // 打开页面自动聚焦账户输入框
$("#accountid").focus(); $("#accountid").focus();
// 询问是否可以显示注册按钮
$.ajax({
type : "POST",
dataType : "text",
data : {},
url : "homeController/askForAllowSignUpOrNot.ajax",
success : function(result) {
if (result == "true") {
$("#signupBox").removeClass("hidden");
$("#signupBox").addClass("show");
return;
}
},
error : function() {
alert("错误无法连接到kiftd服务器请检查您的网络连接或查看服务器运行状态。");
}
});
}) })
function dologin() { function dologin() {
@ -35,6 +52,7 @@ function dologin() {
$("#accountpwdbox").removeClass("has-error"); $("#accountpwdbox").removeClass("has-error");
} }
if (check == "y") { if (check == "y") {
startLogin();
$.ajax({ $.ajax({
type : "POST", type : "POST",
dataType : "text", dataType : "text",
@ -50,9 +68,7 @@ function dologin() {
sendLoginInfo(encrypted); sendLoginInfo(encrypted);
}, },
error : function() { error : function() {
$("#alertbox").addClass("alert"); showAlert("提示:登录请求失败,请检查网络或服务器运行状态");
$("#alertbox").addClass("alert-danger");
$("#alertbox").text("提示:登录请求失败,请检查网络或服务器运行状态");
} }
}); });
} }
@ -76,45 +92,37 @@ function sendLoginInfo(encrypted) {
$("#vercodebox").addClass("hidden"); $("#vercodebox").addClass("hidden");
switch (result) { switch (result) {
case "permitlogin": case "permitlogin":
finishLogin();
$("#accountidbox").removeClass("has-error"); $("#accountidbox").removeClass("has-error");
$("#accountpwdbox").removeClass("has-error"); $("#accountpwdbox").removeClass("has-error");
window.location.href = "home.html"; window.location.href = "/home.html";
break; break;
case "accountnotfound": case "accountnotfound":
$("#accountidbox").addClass("has-error"); $("#accountidbox").addClass("has-error");
$("#accountpwdbox").removeClass("has-error"); $("#accountpwdbox").removeClass("has-error");
$("#alertbox").addClass("alert"); showAlert("提示:登录失败,账户不存在或未设置");
$("#alertbox").addClass("alert-danger");
$("#alertbox").text("提示:登录失败,账户不存在或未设置");
break; break;
case "accountpwderror": case "accountpwderror":
$("#accountpwdbox").addClass("has-error"); $("#accountpwdbox").addClass("has-error");
$("#accountidbox").removeClass("has-error"); $("#accountidbox").removeClass("has-error");
$("#alertbox").addClass("alert"); showAlert("提示:登录失败,密码错误或未设置");
$("#alertbox").addClass("alert-danger");
$("#alertbox").text("提示:登录失败,密码错误或未设置");
break; break;
case "needsubmitvercode": case "needsubmitvercode":
finishLogin();
$("#vercodebox").html("<label id='vercodetitle' class='col-sm-6'><img id='showvercode' class='vercodeimg' alt='点击获取验证码' src='homeController/getNewVerCode.do?s="+(new Date()).getTime()+"' onclick='getNewVerCode()'></label><div class='col-sm-6'><input type='text' class='form-control' id='vercode' placeholder='验证码……'></div>"); $("#vercodebox").html("<label id='vercodetitle' class='col-sm-6'><img id='showvercode' class='vercodeimg' alt='点击获取验证码' src='homeController/getNewVerCode.do?s="+(new Date()).getTime()+"' onclick='getNewVerCode()'></label><div class='col-sm-6'><input type='text' class='form-control' id='vercode' placeholder='验证码……'></div>");
$("#vercodebox").removeClass("hidden"); $("#vercodebox").removeClass("hidden");
$("#vercodebox").addClass("show"); $("#vercodebox").addClass("show");
break; break;
case "error": case "error":
$("#alertbox").addClass("alert"); showAlert("提示:登录失败,登录请求无法通过效验(可能是请求耗时过长导致的)");
$("#alertbox").addClass("alert-danger");
$("#alertbox").text("提示:登录失败,登录请求无法通过效验(可能是请求耗时过长导致的)");
break; break;
default: default:
$("#alertbox").addClass("alert"); showAlert("提示:无法登录,未知错误");
$("#alertbox").addClass("alert-danger");
$("#alertbox").text("提示:无法登录,未知错误");
break; break;
} }
}, },
error : function() { error : function() {
$("#alertbox").addClass("alert"); showAlert("提示:登录请求失败,请检查网络或服务器运行状态");
$("#alertbox").addClass("alert-danger");
$("#alertbox").text("提示:登录请求失败,请检查网络或服务器运行状态");
} }
}); });
} }
@ -122,4 +130,27 @@ function sendLoginInfo(encrypted) {
//获取一个新的验证码 //获取一个新的验证码
function getNewVerCode(){ function getNewVerCode(){
$("#showvercode").attr("src","homeController/getNewVerCode.do?s="+(new Date()).getTime()); $("#showvercode").attr("src","homeController/getNewVerCode.do?s="+(new Date()).getTime());
}
function showAlert(text){
finishLogin();
$("#alertbox").addClass("alert");
$("#alertbox").addClass("alert-danger");
$("#alertbox").text(text);
}
function startLogin(){
$("#loginBtn").attr('disabled','disabled');
$("#accountid").attr('disabled','disabled');
$("#accountpwd").attr('disabled','disabled');
$("#vercode").attr('disabled','disabled');
$("#loginBtn").val('正在登录...');
}
function finishLogin(){
$("#loginBtn").removeAttr('disabled');
$("#accountid").removeAttr('disabled');
$("#accountpwd").removeAttr('disabled');
$("#vercode").removeAttr('disabled');
$("#loginBtn").val('登录');
} }

145
webContext/js/signup.js Normal file
View File

@ -0,0 +1,145 @@
/**
* For signup.html
*/
$(function(){
// 回车键快捷操作
$("body").keypress(function(e) {
var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
if (keyCode == 13) {
var g = $("#signupBtn").click();
return false;
}
});
$("#accountid").focus();//再自动聚焦账户输入框
})
//获取一个新的验证码
function getNewVerCode(){
$("#showvercode").attr("src","homeController/getNewVerCode.do?s="+(new Date()).getTime());
}
//执行注册过程
function doSignUp(){
// 还原提示状态
$("#accountidbox,#accountpwdbox,#repaccountpwdbox").removeClass("has-error");
$("#alertbox").removeClass("show");
$("#alertbox").addClass("hidden");
var accountId = $("#accountid").val();
var accountPwd = $("#accountpwd").val();
var repAccountPwd = $("#repaccountpwd").val();
// 输入非空检查
if (accountId.length == 0) {
$("#accountidbox").addClass("has-error");
$("#accountid").focus();
return;
}
if (accountPwd.length == 0) {
$("#accountpwdbox").addClass("has-error");
$("#accountpwd").focus();
return;
}
if (repAccountPwd.length == 0) {
$("#repaccountpwdbox").addClass("has-error");
$("#repaccountpwd").focus();
return;
}
// 确认密码检查
$("#accountid,#accountpwd,#repaccountpwd,#signupBtn,#vercode").attr('disabled', true);
if (accountPwd+"" != repAccountPwd+"") {
showAlert("提示:两次输入的新密码不一致,请检查确认");
$("#accountpwdbox").addClass("has-error");
$("#repaccountpwdbox").addClass("has-error");
return;
}
// 以加密方式发送修改密码请求
$.ajax({
url : 'homeController/getPublicKey.ajax',
type : 'POST',
data : {},
dataType : 'text',
success : function(result) {
// 获取公钥
var signup_publicKeyInfo=eval("("+result+")");
// 生成JSON对象格式的信息
var signUpInfo = '{account:"' + accountId + '",pwd:"'
+ accountPwd + '",time:"' + signup_publicKeyInfo.time + '"}';
var encrypt = new JSEncrypt();// 加密插件对象
encrypt.setPublicKey(signup_publicKeyInfo.publicKey);// 设置公钥
var encrypted = encrypt.encrypt(signUpInfo);// 进行加密
sendSignUpInfo(encrypted);
},
error : function() {
showAlert("提示:注册失败,请检查网络链接或服务器运行状态");
}
});
}
// 将加密数据发送至服务器并显示操作结果
function sendSignUpInfo(encrypted){
$.ajax({
type : "POST",
dataType : "text",
url : "homeController/doSigUp.ajax",
data : {
encrypted : encrypted,
vercode : $("#vercode").val()
},
success : function(result) {
switch (result) {
case "success":
$("#accountidbox,#accountpwdbox,#repaccountpwdbox").removeClass("has-error");
window.location.href = "/home.html";
break;
case "illegal":
showAlert("提示:注册功能已被禁用,请求被拒绝");
break;
case "accountexists":
showAlert("提示:该账户名已存在,请使用其他账户名进行注册");
$("#accountidbox").addClass("has-error");
break;
case "needvercode":
$("#accountid,#accountpwd,#repaccountpwd,#signupBtn,#vercode").attr('disabled', false);
$("#vercodebox").removeClass("hidden");
$("#vercodebox").addClass("show");
getNewVerCode();
break;
case "invalidaccount":
showAlert("提示注册失败账户名不合法。账户名的长度需为3-32个字符且仅支持ISO-8859-1中的字符推荐使用英文字母、英文符号及阿拉伯数字。");
$("#accountidbox").addClass("has-error");
break;
case "illegalaccount":
showAlert("提示:注册失败,账户名中不得包含“=”或“:”,且首个字符不能为“#”。");
$("#accountidbox").addClass("has-error");
break;
case "mustlogout":
showAlert("提示:您已经登入了一个账户,请先注销后再执行本操作");
break;
case "invalidpwd":
showAlert("提示注册失败密码格式不正确。密码的长度需为3-32个字符且仅支持ISO-8859-1中的字符推荐使用英文字母、英文符号及阿拉伯数字。");
$("#accountpwdbox").addClass("has-error");
$("#repaccountpwdbox").addClass("has-error");
break;
case "error":
showAlert("提示:注册失败,注册请求无法通过加密效验(可能是请求耗时过长导致的)");
break;
case "cannotsignup":
showAlert("提示:注册失败,发生意外错误,请稍后重试或联系管理员");
break;
default:
showAlert("提示:注册失败,发生未知错误");
break;
}
},
error : function() {
showAlert("提示:注册失败,请检查网络链接或服务器运行状态");
}
});
}
// 显示修改密码错误提示
function showAlert(txt) {
$("#accountid,#accountpwd,#repaccountpwd,#signupBtn,#vercode").attr('disabled', false);
$("#alertbox").removeClass("hidden");
$("#alertbox").addClass("show");
$("#alertbox").text(txt);
}

File diff suppressed because one or more lines are too long

View File

@ -67,24 +67,26 @@ See https://github.com/adobe-type-tools/cmap-resources
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70); filter: progid:DXImageTransform.Microsoft.Alpha(opacity=70);
} }
@-webkit-keyframes zoom { @
from { -webkit-keyframes zoom {from { -webkit-transform:scale(0)
-webkit-transform:scale(0)
}
to {
-webkit-transform: scale(1)
}
} }
@keyframes zoom { to {
from { -webkit-transform: scale(1)
transform:scale(0)
}
to {
transform: scale(1)
}
} }
}
@
keyframes zoom {from { transform:scale(0)
}
to {
transform: scale(1)
}
}
.pdf-modal-body { .pdf-modal-body {
font-size: 18px; font-size: 18px;
box-sizing: border-box; box-sizing: border-box;
@ -540,24 +542,29 @@ See https://github.com/adobe-type-tools/cmap-resources
//增加了加载需要耗时转换的文档时的加载提示 //增加了加载需要耗时转换的文档时的加载提示
window.onload = function() { window.onload = function() {
var url = location.search; var url = location.search;
if (url.indexOf(".block") < 0) { if (url.indexOf("getResource") < 0) {
var modal = document.getElementById('pdf-modal'); var modal = document.getElementById('pdf-modal');
if (url.indexOf("getWordView") >= 0) { if (url.indexOf("getWordView") >= 0) {
document.getElementById('doc-type-box').innerHTML="Word"; document.getElementById('doc-type-box').innerHTML = "Word";
}else if(url.indexOf("getTxtView") >= 0){ } else if (url.indexOf("getTxtView") >= 0) {
document.getElementById('doc-type-box').innerHTML="TXT"; document.getElementById('doc-type-box').innerHTML = "TXT";
}else if(url.indexOf("getPPTView") >= 0){ } else if (url.indexOf("getPPTView") >= 0) {
document.getElementById('doc-type-box').innerHTML="PPT"; document.getElementById('doc-type-box').innerHTML = "PPT";
}else{ } else {
document.getElementById('doc-type-box').innerHTML="未知类型"; document.getElementById('doc-type-box').innerHTML = "未知类型";
} }
modal.style.display = "block"; modal.style.display = "block";
var interval = setInterval(function() { var interval = setInterval(
if (PDFViewerApplication.pdfDocument != null) { function() {
clearInterval(interval); if (PDFViewerApplication.pdfDocument != null
modal.style.display = "none"; || PDFViewerApplication.appConfig.errorWrapper.container.hidden == false) {
} clearInterval(interval);
}, 1); modal.style.display = "none";
if (PDFViewerApplication.appConfig.errorWrapper.container.hidden == false) {
alert("提示:打开目标文档时发生意外错误(刷新页面将再次尝试打开该文档)。");
}
}
}, 1);
} }
} }
</script> </script>

View File

@ -0,0 +1,46 @@
<!doctype html>
<html>
<head>
<base href="/">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>KIFT</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/overrall.min.css">
<link rel="icon" type="image/x-icon" href="css/icon.png" />
<!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="titlebox">
<span class="titletext"><em> 青阳网络文件传输系统 <small><span
class="graytext">KIFT</span></small></em></span>
</div>
<hr />
</div>
</div>
<div class="row">
<div class="col-md-12">
<h2 class="centerText">
<span class="glyphicon glyphicon-exclamation-sign"
aria-hidden="true"></span>错误:拒绝访问!
</h2>
<br />
<h4 class="centerText">您无权访问该服务器,请求已经被阻止。如有疑问请联系管理员。</h4>
</div>
</div>
</div>
</body>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
</html>

View File

@ -66,6 +66,11 @@
<div id="alertbox" role="alert"></div> <div id="alertbox" role="alert"></div>
<input id="loginBtn" class="form-control btn-success" <input id="loginBtn" class="form-control btn-success"
type="button" value="登录" onclick="dologin()"> <br /> type="button" value="登录" onclick="dologin()"> <br />
<div id="signupBox" class="hidden">
<input class="form-control btn-info"
type="button" value="立即注册"
onclick="window.location.href = '/prv/signup.html'"> <br />
</div>
</form> </form>
</div> </div>
</div> </div>

View File

@ -0,0 +1,91 @@
<!doctype html>
<html>
<head>
<base href="/">
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
name="viewport" />
<title>KIFT</title>
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/overrall.min.css">
<link rel="icon" type="image/x-icon" href="css/icon.png" />
<!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="titlebox">
<span class="titletext"><em> 青阳网络文件传输系统 <small><span
class="graytext">KIFT</span></small></em></span>
</div>
<hr />
</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<p class="centerText" style="font-size: 30px; color: #4D4D4D">
<strong>欢迎注册新账户</strong>
</p>
<p class="centerText" style="font-size: 18px; color: #9C9C9C">
<span class="glyphicon glyphicon-log-in"></span> 请输入以下信息来创建您的新账户
</p>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">注册新账户</h3>
</div>
<div class="panel-body">
<form class="form-horizontal">
<div class="form-group" id="accountidbox">
<label for="accountid" id="accountidtitle"
class="col-sm-3 control-label">账户名:</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="accountid"
placeholder="请输入要注册的账户名……">
</div>
</div>
<div class="form-group" id="accountpwdbox">
<label for="accountpwd" id="accountpwdtitle"
class="col-sm-3 control-label">密码:</label>
<div class="col-sm-9">
<input type="password" class="form-control" id="accountpwd"
placeholder="请输入新账户的密码……">
</div>
</div>
<div class="form-group" id="repaccountpwdbox">
<label for="accountpwd" id="repaccountpwdtitle"
class="col-sm-3 control-label">确认密码:</label>
<div class="col-sm-9">
<input type="password" class="form-control" id="repaccountpwd"
placeholder="请再次输入新账户的密码……">
</div>
</div>
<br />
<div id="vercodebox" class="form-group hidden"><label class='col-sm-5'><img id='showvercode' class='vercodeimg' alt='点击获取验证码' src='' onclick='getNewVerCode()'></label><div class='col-sm-7'><input type='text' class='form-control' id='vercode' placeholder='请输入验证码进行验证……'></div></div>
<div id="alertbox" role="alert" class="alert alert-danger hidden"></div>
<input id="signupBtn" class="form-control btn-primary"
type="button" value="立即注册" onclick="doSignUp()"> <br />
<input class="form-control btn-danger" type="button" value="返回"
onclick="window.location.href = '/home.html'"> <br />
</form>
</div>
</div>
</div>
</div>
</div>
</body>
<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
<script type="text/javascript" src="js/jsencrypt.min.js"></script>
<script type="text/javascript" src="js/signup.js"></script>
</html>

View File

@ -5,10 +5,10 @@ var tReq;
var tTimer; var tTimer;
var pingInt; var pingInt;
$(function() { $(function() {
window.onresize = function(){ window.onresize = function() {
showCloseBtn(); showCloseBtn();
} }
pingInt = setInterval("ping()",60000); pingInt = setInterval("ping()", 60000);
var fileId = getFileId(); var fileId = getFileId();
$ $
.ajax({ .ajax({
@ -21,7 +21,7 @@ $(function() {
success : function(result) { success : function(result) {
if (result != "ERROR") { if (result != "ERROR") {
f = eval("(" + result + ")"); f = eval("(" + result + ")");
$("#vname").text(f.fileName.replace('\'','&#39;').replace('<','&lt;').replace('>','&gt;')); $("#vname").text(f.fileName);
$("#vcreator").text(f.fileCreator); $("#vcreator").text(f.fileCreator);
$("#vcdate").text(f.fileCreationDate); $("#vcdate").text(f.fileCreationDate);
$("#vsize").text(f.fileSize); $("#vsize").text(f.fileSize);
@ -59,9 +59,11 @@ function playVideo() {
$("#playerbox") $("#playerbox")
.html( .html(
"<video id='kiftplayer' class='video-js col-md-12' controls preload='auto' height='500'>" "<video id='kiftplayer' class='video-js col-md-12' controls preload='auto' height='500'>"
+ "<source src='resourceController/getResource.do?fid=" + "<source src='resourceController/getResource/"
+ f.fileId + "' type='video/mp4'></video>"); + f.fileId + "' type='video/mp4'></video>");
var player = videojs('kiftplayer'); var player = videojs('kiftplayer', {
preload : 'auto'
});
player.ready(function() { player.ready(function() {
this.play(); this.play();
}); });
@ -69,10 +71,10 @@ function playVideo() {
// 关闭当前窗口并释放播放器 // 关闭当前窗口并释放播放器
function reMainPage() { function reMainPage() {
if(tReq != null){ if (tReq != null) {
tReq.abort() tReq.abort()
} }
if(tTimer != null){ if (tTimer != null) {
window.clearTimeout(tTimer); window.clearTimeout(tTimer);
} }
window.opener = null; window.opener = null;
@ -82,7 +84,7 @@ function reMainPage() {
// 进行转码请求并监听进度状态(轮询) // 进行转码请求并监听进度状态(轮询)
function doTranscode() { function doTranscode() {
tReq=$.ajax({ tReq = $.ajax({
url : 'resourceController/getVideoTranscodeStatus.ajax', url : 'resourceController/getVideoTranscodeStatus.ajax',
type : 'POST', type : 'POST',
dataType : 'text', dataType : 'text',
@ -97,7 +99,7 @@ function doTranscode() {
reMainPage(); reMainPage();
} else { } else {
$("#transcodeProgress").text(result); $("#transcodeProgress").text(result);
tTimer=setTimeout('doTranscode()', 500);// 每隔1秒询问一次进度 tTimer = setTimeout('doTranscode()', 500);// 每隔1秒询问一次进度
} }
}, },
error : function() { error : function() {
@ -107,28 +109,28 @@ function doTranscode() {
}); });
} }
function showCloseBtn(){ function showCloseBtn() {
var win = $(window).width(); var win = $(window).width();
if(win < 450){ if (win < 450) {
$("#closeBtn").addClass("hidden"); $("#closeBtn").addClass("hidden");
}else{ } else {
$("#closeBtn").removeClass("hidden"); $("#closeBtn").removeClass("hidden");
} }
} }
//防止播放视频时会话超时的应答器,每分钟应答一次 // 防止播放视频时会话超时的应答器,每分钟应答一次
function ping(){ function ping() {
$.ajax({ $.ajax({
url:"homeController/ping.ajax", url : "homeController/ping.ajax",
type:"POST", type : "POST",
dataType:"text", dataType : "text",
data:{}, data : {},
success:function(result){ success : function(result) {
if(result != 'pong'){ if (result != 'pong') {
window.clearInterval(pingInt); window.clearInterval(pingInt);
} }
}, },
error:function(){ error : function() {
window.clearInterval(pingInt); window.clearInterval(pingInt);
} }
}); });

View File

@ -1 +1 @@
function getFileId(){var b,a=location.search;return-1!=a.indexOf("?")?(b=a.substr(1),strs=b.split("="),strs[1]):""}function playVideo(){$("#playerbox").html("<video id='kiftplayer' class='video-js col-md-12' controls preload='auto' height='500'><source src='resourceController/getResource.do?fid="+f.fileId+"' type='video/mp4'></video>");var a=videojs("kiftplayer");a.ready(function(){this.play()})}function reMainPage(){null!=tReq&&tReq.abort(),null!=tTimer&&window.clearTimeout(tTimer),window.opener=null,window.open("","_self"),window.close()}function doTranscode(){tReq=$.ajax({url:"resourceController/getVideoTranscodeStatus.ajax",type:"POST",dataType:"text",data:{fileId:f.fileId},success:function(a){"FIN"==a?playVideo():"ERROR"==a?(alert("错误:请求失败,请刷新重试。"),reMainPage()):($("#transcodeProgress").text(a),tTimer=setTimeout("doTranscode()",500))},error:function(){alert("错误:请求失败,请刷新重试。"),reMainPage()}})}function showCloseBtn(){var a=$(window).width();450>a?$("#closeBtn").addClass("hidden"):$("#closeBtn").removeClass("hidden")}function ping(){$.ajax({url:"homeController/ping.ajax",type:"POST",dataType:"text",data:{},success:function(a){"pong"!=a&&window.clearInterval(pingInt)},error:function(){window.clearInterval(pingInt)}})}var tReq,tTimer,pingInt;$(function(){window.onresize=function(){showCloseBtn()},pingInt=setInterval("ping()",6e4);var fileId=getFileId();$.ajax({url:"homeController/playVideo.ajax",type:"POST",dataType:"text",data:{fileId:fileId},success:function(result){"ERROR"!=result?(f=eval("("+result+")"),$("#vname").text(f.fileName.replace("'","&#39;").replace("<","&lt;").replace(">","&gt;")),$("#vcreator").text(f.fileCreator),$("#vcdate").text(f.fileCreationDate),$("#vsize").text(f.fileSize),"N"==f.needEncode?playVideo():($("#playerMassage").html("<h2>播放器正在努力解码中...</h2><h3>已完成:<span id='transcodeProgress'>0</span>%</h3><p class='text-muted'>提示:该视频需解码后播放,请耐心等待!</p>"),doTranscode())):(alert("错误:无法定位要预览的文件或该操作未被授权。"),reMainPage())},error:function(){alert("错误:请求失败,请刷新重试。"),reMainPage()}})}); function getFileId(){var b,a=location.search;return-1!=a.indexOf("?")?(b=a.substr(1),strs=b.split("="),strs[1]):""}function playVideo(){$("#playerbox").html("<video id='kiftplayer' class='video-js col-md-12' controls preload='auto' height='500'><source src='resourceController/getResource/"+f.fileId+"' type='video/mp4'></video>");var a=videojs("kiftplayer",{preload:"auto"});a.ready(function(){this.play()})}function reMainPage(){null!=tReq&&tReq.abort(),null!=tTimer&&window.clearTimeout(tTimer),window.opener=null,window.open("","_self"),window.close()}function doTranscode(){tReq=$.ajax({url:"resourceController/getVideoTranscodeStatus.ajax",type:"POST",dataType:"text",data:{fileId:f.fileId},success:function(a){"FIN"==a?playVideo():"ERROR"==a?(alert("错误:请求失败,请刷新重试。"),reMainPage()):($("#transcodeProgress").text(a),tTimer=setTimeout("doTranscode()",500))},error:function(){alert("错误:请求失败,请刷新重试。"),reMainPage()}})}function showCloseBtn(){var a=$(window).width();450>a?$("#closeBtn").addClass("hidden"):$("#closeBtn").removeClass("hidden")}function ping(){$.ajax({url:"homeController/ping.ajax",type:"POST",dataType:"text",data:{},success:function(a){"pong"!=a&&window.clearInterval(pingInt)},error:function(){window.clearInterval(pingInt)}})}var tReq,tTimer,pingInt;$(function(){window.onresize=function(){showCloseBtn()},pingInt=setInterval("ping()",6e4);var fileId=getFileId();$.ajax({url:"homeController/playVideo.ajax",type:"POST",dataType:"text",data:{fileId:fileId},success:function(result){"ERROR"!=result?(f=eval("("+result+")"),$("#vname").text(f.fileName),$("#vcreator").text(f.fileCreator),$("#vcdate").text(f.fileCreationDate),$("#vsize").text(f.fileSize),"N"==f.needEncode?playVideo():($("#playerMassage").html("<h2>播放器正在努力解码中...</h2><h3>已完成:<span id='transcodeProgress'>0</span>%</h3><p class='text-muted'>提示:该视频需解码后播放,请耐心等待!</p>"),doTranscode())):(alert("错误:无法定位要预览的文件或该操作未被授权。"),reMainPage())},error:function(){alert("错误:请求失败,请刷新重试。"),reMainPage()}})});

View File

@ -1,13 +1,13 @@
kiftd 使用许可 kiftd 使用许可
Copyright © 2019 青阳龙野 <kohgylw@163.com> Copyright © 2018-2020 青阳龙野 <kohgylw@163.com>
使用、分发或修改kiftd及其程序的源代码均代表您接受如下条款 使用、分发或修改kiftd及其程序的源代码均代表您接受如下条款
1任何组织或个人均能够自由、无偿地获得kiftd发行版及其源代码的原版拷贝并对其享有无限制使用的权利——无论是商业性的还是非商业性的。 1任何组织或个人均能够自由、无偿地获得kiftd发行版及其源代码的原版拷贝并对其享有无限制使用的权利——无论是商业性的还是非商业性的。
2任何组织或个人均能够自由复制、分发或修改kiftd发行版及其源代码并将其用于任何用途。修改后的作品版权由修改者自身享有。 2任何组织或个人均能够自由复制、分发或修改kiftd发行版及其源代码并将其用于任何用途。修改后的作品版权由修改者自身享有。
3kiftd的作者无需为使用该软件及其源代码所造成的任何直接或间接后果承担责任。 3kiftd的作者无需为使用该软件及其源代码所造成的任何直接或间接后果承担责任。
4kiftd的作者对kiftd中的全部java源代码、页面文件、js及css文件、jar程序、mybatisResource文件夹内的资源、README.md文件以及随发行版程序附带的原版《kiftd说明文档》享有版权并作为kiftd软件的版权人。 4kiftd的作者对kiftd中的全部java源代码、页面文件、js及css文件、jar程序、mybatisResource文件夹内的资源、README.md文件以及随发行版程序附带的原版《kiftd说明文档》享有版权并作为kiftd软件的版权人。
5kiftd软件中涉及的所有第三方软件、工具、图片、插件及其代码其权利由该资源之作者享有并授予kiftd使用许可。任何单位和个人认为kiftd包含的上述内容可能涉嫌侵犯其合法权益时应及时向kiftd作者进行书面反馈并提供其身份证明、权属证明及详细侵权情况的说明kiftd将会立即移除被控侵权的内容。 5kiftd软件中涉及的所有第三方软件、工具、图片、插件及其代码其权利由该作品的权利人享有并授予kiftd使用许可。任何单位和个人认为kiftd包含的上述内容可能涉嫌侵犯其合法权益时应及时向kiftd作者进行书面反馈并提供其身份证明、权属证明及详细侵权情况的说明kiftd将会立即移除被控侵权的内容。
版权人信息: 版权人信息:
地址河北省唐山市路北区兴源里玫瑰庄园6单元602号 地址河北省唐山市路北区兴源里玫瑰庄园6单元602号