diff --git a/README.md b/README.md index c90a94c1a..678e03275 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,10 @@ +> [!IMPORTANT] +> KindEditor has not been maintained for a long time, and there will be no further upgrades in the future. You can try [Lake(https://lakejs.org/)](https://lakejs.org/), a new editor I developed. It is quite different from KindEditor in many aspects, but it might still meet your needs. + ## What is KindEditor? KindEditor is a lightweight, Open Source(LGPL), cross browser, web based WYSIWYG HTML editor. KindEditor has the ability to convert standard textareas to rich text editing. -## Official site - -http://kindeditor.net/ - ## Contributors * Timon Lin diff --git a/asp.net/README.txt b/asp.net/README.txt deleted file mode 100644 index 64f59cd98..000000000 --- a/asp.net/README.txt +++ /dev/null @@ -1,14 +0,0 @@ -KindEditor ASP.NET - -本ASP.NET程序是演示程序,建议不要直接在实际项目中使用。 -如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。 - -使用方法: - -1. 解压zip文件,将所有文件复制到IIS的wwwroot/kindeditor目录下。 - -2. 将kindeditor/asp.net/bin目录下的dll文件复制到wwwroot/bin目录下。 - -3. ashx.txt 扩展名改成 ashx。 - -4. 打开浏览器,输入http://localhost:[P0RT]/kindeditor/asp.net/demo.aspx。 diff --git a/asp.net/bin/LitJSON.dll b/asp.net/bin/LitJSON.dll deleted file mode 100644 index 9cc439db8..000000000 Binary files a/asp.net/bin/LitJSON.dll and /dev/null differ diff --git a/asp.net/demo.aspx b/asp.net/demo.aspx deleted file mode 100644 index f69493e46..000000000 --- a/asp.net/demo.aspx +++ /dev/null @@ -1,53 +0,0 @@ -<%@ Page Language="C#" AutoEventWireup="true" validateRequest="false" %> - - - - - - - - - KindEditor ASP.NET - - - - - - - - - -
- -
- (提交快捷键: Ctrl + Enter) - - - diff --git a/asp.net/file_manager_json.ashx.txt b/asp.net/file_manager_json.ashx.txt deleted file mode 100644 index 329f14f0f..000000000 --- a/asp.net/file_manager_json.ashx.txt +++ /dev/null @@ -1,227 +0,0 @@ -<%@ webhandler Language="C#" class="FileManager" %> - -/** - * KindEditor ASP.NET - * - * 本ASP.NET程序是演示程序,建议不要直接在实际项目中使用。 - * 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。 - * - */ - -using System; -using System.Collections; -using System.Web; -using System.IO; -using System.Text.RegularExpressions; -using LitJson; -using System.Collections.Generic; - -public class FileManager : IHttpHandler -{ - public void ProcessRequest(HttpContext context) - { - String aspxUrl = context.Request.Path.Substring(0, context.Request.Path.LastIndexOf("/") + 1); - - //根目录路径,相对路径 - String rootPath = "../attached/"; - //根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/ - String rootUrl = aspxUrl + "../attached/"; - //图片扩展名 - String fileTypes = "gif,jpg,jpeg,png,bmp"; - - String currentPath = ""; - String currentUrl = ""; - String currentDirPath = ""; - String moveupDirPath = ""; - - String dirPath = context.Server.MapPath(rootPath); - String dirName = context.Request.QueryString["dir"]; - if (!String.IsNullOrEmpty(dirName)) { - if (Array.IndexOf("image,flash,media,file".Split(','), dirName) == -1) { - context.Response.Write("Invalid Directory name."); - context.Response.End(); - } - dirPath += dirName + "/"; - rootUrl += dirName + "/"; - if (!Directory.Exists(dirPath)) { - Directory.CreateDirectory(dirPath); - } - } - - //根据path参数,设置各路径和URL - String path = context.Request.QueryString["path"]; - path = String.IsNullOrEmpty(path) ? "" : path; - if (path == "") - { - currentPath = dirPath; - currentUrl = rootUrl; - currentDirPath = ""; - moveupDirPath = ""; - } - else - { - currentPath = dirPath + path; - currentUrl = rootUrl + path; - currentDirPath = path; - moveupDirPath = Regex.Replace(currentDirPath, @"(.*?)[^\/]+\/$", "$1"); - } - - //排序形式,name or size or type - String order = context.Request.QueryString["order"]; - order = String.IsNullOrEmpty(order) ? "" : order.ToLower(); - - //不允许使用..移动到上一级目录 - if (Regex.IsMatch(path, @"\.\.")) - { - context.Response.Write("Access is not allowed."); - context.Response.End(); - } - //最后一个字符不是/ - if (path != "" && !path.EndsWith("/")) - { - context.Response.Write("Parameter is not valid."); - context.Response.End(); - } - //目录不存在或不是目录 - if (!Directory.Exists(currentPath)) - { - context.Response.Write("Directory does not exist."); - context.Response.End(); - } - - //遍历目录取得文件信息 - string[] dirList = Directory.GetDirectories(currentPath); - string[] fileList = Directory.GetFiles(currentPath); - - switch (order) - { - case "size": - Array.Sort(dirList, new NameSorter()); - Array.Sort(fileList, new SizeSorter()); - break; - case "type": - Array.Sort(dirList, new NameSorter()); - Array.Sort(fileList, new TypeSorter()); - break; - case "name": - default: - Array.Sort(dirList, new NameSorter()); - Array.Sort(fileList, new NameSorter()); - break; - } - - Hashtable result = new Hashtable(); - result["moveup_dir_path"] = moveupDirPath; - result["current_dir_path"] = currentDirPath; - result["current_url"] = currentUrl; - result["total_count"] = dirList.Length + fileList.Length; - List dirFileList = new List(); - result["file_list"] = dirFileList; - for (int i = 0; i < dirList.Length; i++) - { - DirectoryInfo dir = new DirectoryInfo(dirList[i]); - Hashtable hash = new Hashtable(); - hash["is_dir"] = true; - hash["has_file"] = (dir.GetFileSystemInfos().Length > 0); - hash["filesize"] = 0; - hash["is_photo"] = false; - hash["filetype"] = ""; - hash["filename"] = dir.Name; - hash["datetime"] = dir.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss"); - dirFileList.Add(hash); - } - for (int i = 0; i < fileList.Length; i++) - { - FileInfo file = new FileInfo(fileList[i]); - Hashtable hash = new Hashtable(); - hash["is_dir"] = false; - hash["has_file"] = false; - hash["filesize"] = file.Length; - hash["is_photo"] = (Array.IndexOf(fileTypes.Split(','), file.Extension.Substring(1).ToLower()) >= 0); - hash["filetype"] = file.Extension.Substring(1); - hash["filename"] = file.Name; - hash["datetime"] = file.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss"); - dirFileList.Add(hash); - } - context.Response.AddHeader("Content-Type", "application/json; charset=UTF-8"); - context.Response.Write(JsonMapper.ToJson(result)); - context.Response.End(); - } - - public class NameSorter : IComparer - { - public int Compare(object x, object y) - { - if (x == null && y == null) - { - return 0; - } - if (x == null) - { - return -1; - } - if (y == null) - { - return 1; - } - FileInfo xInfo = new FileInfo(x.ToString()); - FileInfo yInfo = new FileInfo(y.ToString()); - - return xInfo.FullName.CompareTo(yInfo.FullName); - } - } - - public class SizeSorter : IComparer - { - public int Compare(object x, object y) - { - if (x == null && y == null) - { - return 0; - } - if (x == null) - { - return -1; - } - if (y == null) - { - return 1; - } - FileInfo xInfo = new FileInfo(x.ToString()); - FileInfo yInfo = new FileInfo(y.ToString()); - - return xInfo.Length.CompareTo(yInfo.Length); - } - } - - public class TypeSorter : IComparer - { - public int Compare(object x, object y) - { - if (x == null && y == null) - { - return 0; - } - if (x == null) - { - return -1; - } - if (y == null) - { - return 1; - } - FileInfo xInfo = new FileInfo(x.ToString()); - FileInfo yInfo = new FileInfo(y.ToString()); - - return xInfo.Extension.CompareTo(yInfo.Extension); - } - } - - public bool IsReusable - { - get - { - return true; - } - } -} diff --git a/asp.net/upload_json.ashx.txt b/asp.net/upload_json.ashx.txt deleted file mode 100644 index 6363b6c7b..000000000 --- a/asp.net/upload_json.ashx.txt +++ /dev/null @@ -1,121 +0,0 @@ -<%@ webhandler Language="C#" class="Upload" %> - -/** - * KindEditor ASP.NET - * - * 本ASP.NET程序是演示程序,建议不要直接在实际项目中使用。 - * 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。 - * - */ - -using System; -using System.Collections; -using System.Web; -using System.IO; -using System.Globalization; -using LitJson; - -public class Upload : IHttpHandler -{ - private HttpContext context; - - public void ProcessRequest(HttpContext context) - { - String aspxUrl = context.Request.Path.Substring(0, context.Request.Path.LastIndexOf("/") + 1); - - //文件保存目录路径 - String savePath = "../attached/"; - - //文件保存目录URL - String saveUrl = aspxUrl + "../attached/"; - - //定义允许上传的文件扩展名 - Hashtable extTable = new Hashtable(); - extTable.Add("image", "gif,jpg,jpeg,png,bmp"); - extTable.Add("flash", "swf,flv"); - extTable.Add("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb"); - extTable.Add("file", "doc,docx,xls,xlsx,ppt,txt,zip,rar,gz,bz2"); - - //最大文件大小 - int maxSize = 1000000; - this.context = context; - - HttpPostedFile imgFile = context.Request.Files["imgFile"]; - if (imgFile == null) - { - showError("请选择文件。"); - } - - String dirPath = context.Server.MapPath(savePath); - if (!Directory.Exists(dirPath)) - { - showError("上传目录不存在。"); - } - - String dirName = context.Request.QueryString["dir"]; - if (String.IsNullOrEmpty(dirName)) { - dirName = "image"; - } - if (!extTable.ContainsKey(dirName)) { - showError("目录名不正确。"); - } - - String fileName = imgFile.FileName; - String fileExt = Path.GetExtension(fileName).ToLower(); - - if (imgFile.InputStream == null || imgFile.InputStream.Length > maxSize) - { - showError("上传文件大小超过限制。"); - } - - if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(((String)extTable[dirName]).Split(','), fileExt.Substring(1).ToLower()) == -1) - { - showError("上传文件扩展名是不允许的扩展名。\n只允许" + ((String)extTable[dirName]) + "格式。"); - } - - //创建文件夹 - dirPath += dirName + "/"; - saveUrl += dirName + "/"; - if (!Directory.Exists(dirPath)) { - Directory.CreateDirectory(dirPath); - } - String ymd = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo); - dirPath += ymd + "/"; - saveUrl += ymd + "/"; - if (!Directory.Exists(dirPath)) { - Directory.CreateDirectory(dirPath); - } - - String newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt; - String filePath = dirPath + newFileName; - - imgFile.SaveAs(filePath); - - String fileUrl = saveUrl + newFileName; - - Hashtable hash = new Hashtable(); - hash["error"] = 0; - hash["url"] = fileUrl; - context.Response.AddHeader("Content-Type", "text/html; charset=UTF-8"); - context.Response.Write(JsonMapper.ToJson(hash)); - context.Response.End(); - } - - private void showError(string message) - { - Hashtable hash = new Hashtable(); - hash["error"] = 1; - hash["message"] = message; - context.Response.AddHeader("Content-Type", "text/html; charset=UTF-8"); - context.Response.Write(JsonMapper.ToJson(hash)); - context.Response.End(); - } - - public bool IsReusable - { - get - { - return true; - } - } -} diff --git a/asp/JSON_2.0.4.asp b/asp/JSON_2.0.4.asp deleted file mode 100644 index e61ee9c98..000000000 --- a/asp/JSON_2.0.4.asp +++ /dev/null @@ -1,210 +0,0 @@ -<% -' -' VBS JSON 2.0.3 -' Copyright (c) 2009 Turul Topuz -' Under the MIT (MIT-LICENSE.txt) license. -' - -Const JSON_OBJECT = 0 -Const JSON_ARRAY = 1 - -Class jsCore - Public Collection - Public Count - Public QuotedVars - Public Kind ' 0 = object, 1 = array - - Private Sub Class_Initialize - Set Collection = CreateObject("Scripting.Dictionary") - QuotedVars = True - Count = 0 - End Sub - - Private Sub Class_Terminate - Set Collection = Nothing - End Sub - - ' counter - Private Property Get Counter - Counter = Count - Count = Count + 1 - End Property - - ' - data maluplation - ' -- pair - Public Property Let Pair(p, v) - If IsNull(p) Then p = Counter - Collection(p) = v - End Property - - Public Property Set Pair(p, v) - If IsNull(p) Then p = Counter - If TypeName(v) <> "jsCore" Then - Err.Raise &hD, "class: class", "Incompatible types: '" & TypeName(v) & "'" - End If - Set Collection(p) = v - End Property - - Public Default Property Get Pair(p) - If IsNull(p) Then p = Count - 1 - If IsObject(Collection(p)) Then - Set Pair = Collection(p) - Else - Pair = Collection(p) - End If - End Property - ' -- pair - Public Sub Clean - Collection.RemoveAll - End Sub - - Public Sub Remove(vProp) - Collection.Remove vProp - End Sub - ' data maluplation - - ' encoding - Function jsEncode(str) - Dim charmap(127), haystack() - charmap(8) = "\b" - charmap(9) = "\t" - charmap(10) = "\n" - charmap(12) = "\f" - charmap(13) = "\r" - charmap(34) = "\""" - charmap(47) = "\/" - charmap(92) = "\\" - - Dim strlen : strlen = Len(str) - 1 - ReDim haystack(strlen) - - Dim i, charcode - For i = 0 To strlen - haystack(i) = Mid(str, i + 1, 1) - - charcode = AscW(haystack(i)) And 65535 - If charcode < 127 Then - If Not IsEmpty(charmap(charcode)) Then - haystack(i) = charmap(charcode) - ElseIf charcode < 32 Then - haystack(i) = "\u" & Right("000" & Hex(charcode), 4) - End If - Else - haystack(i) = "\u" & Right("000" & Hex(charcode), 4) - End If - Next - - jsEncode = Join(haystack, "") - End Function - - ' converting - Public Function toJSON(vPair) - Select Case VarType(vPair) - Case 0 ' Empty - toJSON = "null" - Case 1 ' Null - toJSON = "null" - Case 7 ' Date - ' toJSON = "new Date(" & (vPair - CDate(25569)) * 86400000 & ")" ' let in only utc time - toJSON = """" & CStr(vPair) & """" - Case 8 ' String - toJSON = """" & jsEncode(vPair) & """" - Case 9 ' Object - Dim bFI,i - bFI = True - If vPair.Kind Then toJSON = toJSON & "[" Else toJSON = toJSON & "{" - For Each i In vPair.Collection - If bFI Then bFI = False Else toJSON = toJSON & "," - - If vPair.Kind Then - toJSON = toJSON & toJSON(vPair(i)) - Else - If QuotedVars Then - toJSON = toJSON & """" & i & """:" & toJSON(vPair(i)) - Else - toJSON = toJSON & i & ":" & toJSON(vPair(i)) - End If - End If - Next - If vPair.Kind Then toJSON = toJSON & "]" Else toJSON = toJSON & "}" - Case 11 - If vPair Then toJSON = "true" Else toJSON = "false" - Case 12, 8192, 8204 - toJSON = RenderArray(vPair, 1, "") - Case Else - toJSON = Replace(vPair, ",", ".") - End select - End Function - - Function RenderArray(arr, depth, parent) - Dim first : first = LBound(arr, depth) - Dim last : last = UBound(arr, depth) - - Dim index, rendered - Dim limiter : limiter = "," - - RenderArray = "[" - For index = first To last - If index = last Then - limiter = "" - End If - - On Error Resume Next - rendered = RenderArray(arr, depth + 1, parent & index & "," ) - - If Err = 9 Then - On Error GoTo 0 - RenderArray = RenderArray & toJSON(Eval("arr(" & parent & index & ")")) & limiter - Else - RenderArray = RenderArray & rendered & "" & limiter - End If - Next - RenderArray = RenderArray & "]" - End Function - - Public Property Get jsString - jsString = toJSON(Me) - End Property - - Sub Flush - If TypeName(Response) <> "Empty" Then - Response.Write(jsString) - ElseIf WScript <> Empty Then - WScript.Echo(jsString) - End If - End Sub - - Public Function Clone - Set Clone = ColClone(Me) - End Function - - Private Function ColClone(core) - Dim jsc, i - Set jsc = new jsCore - jsc.Kind = core.Kind - For Each i In core.Collection - If IsObject(core(i)) Then - Set jsc(i) = ColClone(core(i)) - Else - jsc(i) = core(i) - End If - Next - Set ColClone = jsc - End Function - -End Class - -Function jsObject - Set jsObject = new jsCore - jsObject.Kind = JSON_OBJECT -End Function - -Function jsArray - Set jsArray = new jsCore - jsArray.Kind = JSON_ARRAY -End Function - -Function toJSON(val) - toJSON = (new jsCore).toJSON(val) -End Function -%> \ No newline at end of file diff --git a/asp/UpLoad_Class.asp b/asp/UpLoad_Class.asp deleted file mode 100644 index 991d42a4e..000000000 --- a/asp/UpLoad_Class.asp +++ /dev/null @@ -1,561 +0,0 @@ -<% -'========================================================= - '类名: AnUpLoad(艾恩无组件上传类) - '作者: Anlige - '版本: 艾恩ASP无组件上传类V11.03.25 - '开发日期: 2008-4-12 - '修改日期: 2011-03025 - '主页: http://dev.mo.cn - 'Email: zhanghuiguoanlige@126.com - 'QQ: 1034555083 -'========================================================= -Dim StreamT -Class AnUpLoad - Private Form, Fils - Private vCharSet, vMaxSize, vSingleSize, vErr, vVersion, vTotalSize, vExe, pID, vOP, vErrExe,vboundary, vLostTime, vMode, vFileCount - - '============================== - '设置和读取属性开始 - '============================== - Public Property Let Mode(ByVal value) - vMode = value - End Property - - Public Property Let MaxSize(ByVal value) - vMaxSize = value - End Property - - Public Property Let SingleSize(ByVal value) - vSingleSize = value - End Property - - Public Property Let Exe(ByVal value) - vExe = LCase(value) - End Property - - Public Property Let CharSet(ByVal value) - vCharSet = value - End Property - - Public Property Get ErrorID() - ErrorID = vErr - End Property - - Public Property Get FileCount() - FileCount = Fils.count - End Property - - Public Property Get Description() - Description = GetErr(vErr) - End Property - - Public Property Get Version() - Version = vVersion - End Property - - Public Property Get TotalSize() - TotalSize = vTotalSize - End Property - - Public Property Get ProcessID() - ProcessID = pID - End Property - - Public Property Let openProcesser(ByVal value) - vOP = value - End Property - - Public Property Get LostTime() - LostTime = vLostTime - End Property - '============================== - '设置和读取属性结束,初始化类 - '============================== - - Private Sub Class_Initialize() - set Form = server.createobject("Scripting.Dictionary") - set Fils = server.createobject("Scripting.Dictionary") - Set StreamT = server.CreateObject("Adodb.stream") - vVersion = "艾恩ASP无组件上传类V10.10.22" - vMaxSize = -1 - vSingleSize = -1 - vErr = -1 - vExe = "" - vTotalSize = 0 - vCharSet = "utf-8" - vOP=false - pID="AnUpload" - setApp "",0,0,"" - vMode = 0 - End Sub - - Private Sub Class_Terminate() - Dim f - Form.RemoveAll() - For each f in Fils - Fils(f).value=empty - Set Fils(f) = Nothing - Next - Fils.RemoveAll() - Set Form = Nothing - Set Fils = Nothing - StreamT.Close() - Set StreamT = Nothing - End Sub - - '============================== - '函数名:GetData - '作用:处理客户端提交来的所有数据 - '============================== - Public Sub GetData() - Dim time1 - time1 = timer() - if vOP And trim(request.querystring("processid"))<>"" then pID=request.querystring("processid") - Dim value, str, bcrlf, fpos, sSplit, slen, istart,ef - Dim TotalBytes,tempdata,BytesRead,ChunkReadSize,PartSize,DataPart,formend, formhead, startpos, endpos, formname, FileName, fileExe, valueend, NewName,localname,type_1,contentType - TotalBytes = Request.TotalBytes - ef = false - If checkEntryType = false Then ef = true : vErr = 2 - '下面3句注释掉了,因为在IIS5.0中,如果上传大小大于限制大小的文件,会出错,一直没找到解决方法。如果是在IIS5以上的版本使用,可以取消下面3句的注释 - 'If Not ef Then - 'If vMaxSize > 0 And TotalBytes > vMaxSize Then ef = true : vErr = 1 - 'End If - If ef Then Exit Sub - If vMode = 0 Then - vTotalSize = 0 - StreamT.Type = 1 - StreamT.Mode = 3 - StreamT.Open - BytesRead = 0 - ChunkReadSize = 1024 * 16 - Do While BytesRead < TotalBytes - PartSize = ChunkReadSize - If PartSize + BytesRead > TotalBytes Then PartSize = TotalBytes - BytesRead - DataPart = Request.BinaryRead(PartSize) - StreamT.Write DataPart - BytesRead = BytesRead + PartSize - setApp "uploading",TotalBytes,BytesRead,"" - Loop - setApp "uploaded",TotalBytes,BytesRead,"" - StreamT.Position = 0 - tempdata = StreamT.Read - Else - tempdata = Request.BinaryRead(TotalBytes) - End If - bcrlf = ChrB(13) & ChrB(10) - fpos = InStrB(1, tempdata, bcrlf) - sSplit = MidB(tempdata, 1, fpos - 1) - slen = LenB(sSplit) - istart = slen + 2 - Do - formend = InStrB(istart, tempdata, bcrlf & bcrlf) - formhead = MidB(tempdata, istart, formend - istart) - str = Bytes2Str(formhead) - startpos = InStr(str, "name=""") + 6 - endpos = InStr(startpos, str, """") - formname = LCase(Mid(str, startpos, endpos - startpos)) - valueend = InStrB(formend + 3, tempdata, sSplit) - If InStr(str, "filename=""") > 0 Then - startpos = InStr(str, "filename=""") + 10 - endpos = InStr(startpos, str, """") - type_1=instr(endpos,lcase(str),"content-type") - contentType=trim(mid(str,type_1+13)) - FileName = Mid(str, startpos, endpos - startpos) - If Trim(FileName) <> "" Then - LocalName = FileName - FileName = Replace(FileName, "/", "\") - FileName = Mid(FileName, InStrRev(FileName, "\") + 1) - If instr(FileName,".")>0 Then - fileExe = Split(FileName, ".")(UBound(Split(FileName, "."))) - else - fileExe = "" - End If - If vExe <> "" Then '判断扩展名 - If checkExe(fileExe) = True Then - vErr = 3 - vErrExe = fileExe - tempdata = empty - Exit Sub - End If - End If - NewName = Getname() - NewName = NewName & "." & fileExe - vTotalSize = vTotalSize + valueend - formend - 6 - If vSingleSize > 0 And (valueend - formend - 6) > vSingleSize Then '判断上传单个文件大小 - vErr = 5 - tempdata = empty - Exit Sub - End If - If vMaxSize > 0 And vTotalSize > vMaxSize Then '判断上传数据总大小 - vErr = 1 - tempdata = empty - Exit Sub - End If - If Fils.Exists(formname) Then - vErr = 4 - tempdata = empty - Exit Sub - Else - Dim fileCls:set fileCls= new UploadFileEx - fileCls.ContentType=contentType - fileCls.Size = (valueend - formend - 6) - fileCls.Position = (formend + 3) - fileCls.FormName = formname - fileCls.NewName = NewName - fileCls.FileName = FileName - fileCls.LocalName = FileName - fileCls.extend=split(NewName,".")(ubound(split(NewName,"."))) - Fils.Add formname, fileCls - Set fileCls = Nothing - End If - End If - Else - value = MidB(tempdata, formend + 4, valueend - formend - 6) - If Form.Exists(formname) Then - Form(formname) = Form(formname) & "," & Bytes2Str(value) - Else - Form.Add formname, Bytes2Str(value) - End If - End If - istart = valueend + 2 + slen - Loop Until (istart + 2) >= LenB(tempdata) - vErr = 0 - tempdata = empty - vLostTime = FormatNumber((timer-time1)*1000,2) - End Sub - - Public sub setApp(stp,total,current,desc) - Application.lock() - Application(pID)="{ID:""" & pID & """,step:""" & stp & """,total:" & total & ",now:" & current & ",description:""" & desc & """,dt:""" & now() & """}" - Application.unlock() - end sub - '============================== - '判断扩展名 - '============================== - Private Function checkExe(ByVal ex) - Dim notIn: notIn = True - If vExe="*" then - notIn=false - elseIf InStr(1, vExe, "|") > 0 Then - Dim tempExe: tempExe = Split(vExe, "|") - Dim I: I = 0 - For I = 0 To UBound(tempExe) - If LCase(ex) = tempExe(I) Then - notIn = False - Exit For - End If - Next - Else - If vExe = LCase(ex) Then - notIn = False - End If - End If - checkExe = notIn - End Function - - '============================== - '把数字转换为文件大小显示方式 - '============================== - Public Function GetSize(ByVal Size) - If Size < 1024 Then - GetSize = FormatNumber(Size, 2) & "B" - ElseIf Size >= 1024 And Size < 1048576 Then - GetSize = FormatNumber(Size / 1024, 2) & "KB" - ElseIf Size >= 1048576 Then - GetSize = FormatNumber((Size / 1024) / 1024, 2) & "MB" - End If - End Function - - '============================== - '二进制数据转换为字符 - '============================== - Private Function Bytes2Str(ByVal byt) - If LenB(byt) = 0 Then - Bytes2Str = "" - Exit Function - End If - Dim mystream, bstr - Set mystream =server.createobject("ADODB.Stream") - mystream.Type = 2 - mystream.Mode = 3 - mystream.Open - mystream.WriteText byt - mystream.Position = 0 - mystream.CharSet = vCharSet - mystream.Position = 2 - bstr = mystream.ReadText() - mystream.Close - Set mystream = Nothing - Bytes2Str = bstr - End Function - - '============================== - '获取错误描述 - '============================== - Private Function GetErr(ByVal Num) - Select Case Num - Case 0 - GetErr = "数据处理完毕!" - Case 1 - GetErr = "上传数据超过" & GetSize(vMaxSize) & "限制!可设置MaxSize属性来改变限制!" - Case 2 - GetErr = "未设置上传表单enctype属性为multipart/form-data或者未设置method属性为Post,上传无效!" - Case 3 - GetErr = "含有非法扩展名(" & vErrExe & ")文件!只能上传扩展名为" & Replace(vExe, "|", ",") & "的文件" - Case 4 - GetErr = "对不起,程序不允许使用相同name属性的文件域!" - Case 5 - GetErr = "单个文件大小超出" & GetSize(vSingleSize) & "的上传限制!" - End Select - End Function - - '============================== - '根据日期生成随机文件名 - '============================== - Private Function Getname() - Dim y, m, d, h, mm, S, r - Randomize - y = Year(Now) - m = right("0" & Month(Now),2) - d = right("0" & Day(Now),2) - h = right("0" & Hour(Now),2) - mm =right("0" & Minute(Now),2) - S = right("0" & Second(Now),2) - r = 0 - r = CInt(Rnd() * 10000) - S = right("0000" & r,4) - Getname = y & m & d & h & mm & S & r - End Function - - '============================== - '检测上传类型是否为multipart/form-data - '============================== - Private Function checkEntryType() - Dim ContentType, ctArray, bArray,RequestMethod - RequestMethod=trim(LCase(Request.ServerVariables("REQUEST_METHOD"))) - if RequestMethod="" or RequestMethod<>"post" then - checkEntryType = False - exit function - end if - ContentType = LCase(Request.ServerVariables("HTTP_CONTENT_TYPE")) - ctArray = Split(ContentType, ";") - if ubound(ctarray)>=0 then - If Trim(ctArray(0)) = "multipart/form-data" Then - checkEntryType = True - vboundary = Split(ContentType,"boundary=")(1) - Else - checkEntryType = False - End If - else - checkEntryType = False - end if - End Function - - '============================== - '获取上传表单值,参数可选,如果为-1则返回一个包含所有表单项的一个dictionary对象 - '============================== - Public Function Forms(ByVal formname) - If trim(formname) = "-1" Then - Set Forms = Form - Else - If Form.Exists(LCase(formname)) Then - Forms = Form(LCase(formname)) - Else - Forms = "" - End If - End If - End Function - - '============================== - '获取上传的文件类,参数可选,如果为-1则返回一个包含所有上传文件类的一个dictionary对象 - '============================== - Public Function Files(ByVal formname) - If trim(formname) = "-1" Then - Set Files = Fils - Else - If Fils.Exists(LCase(formname)) Then - Set Files = Fils(LCase(formname)) - Else - Set Files = Nothing - End If - End If - End Function -End Class - -Class UploadFileEx - Private mvarFormName , mvarNewName , mvarLocalName , mvarFileName , mvarUserSetName , mvarContentType ,mException,mvarPosition - Private mvarSize , mvarValue , mvarPath , mvarExtend ,mvarWidth, mvarHeight - - Public Property Let Extend(ByVal vData ) - mvarExtend = vData - End Property - Public Property Get Extend() - Extend = mvarExtend - End Property - - Public Property Get Width() - Width = mvarWidth - End Property - - Public Property Get Height() - Height = mvarHeight - End Property - - - Public Property Let Path(ByVal vData ) - mvarPath = vData - End Property - Public Property Get Path() - Path = mvarPath - End Property - - Public Property Get Exception() - Exception = mException - End Property - - Public Property Let Value(ByVal vData ) - mvarValue = vData - End Property - - Public Property Get Value() - Value = mvarValue - End Property - - Public Property Let Size(ByVal vData ) - mvarSize = vData - End Property - Public Property Get Size() - Size = mvarSize - End Property - - Public Property Let Position(ByVal vData ) - mvarPosition = vData - End Property - Public Property Get Position() - Size = mvarPosition - End Property - - Public Property Let ContentType(ByVal vData ) - mvarContentType = vData - End Property - Public Property Get ContentType() - ContentType = mvarContentType - End Property - - Public Property Let UserSetName(ByVal vData ) - mvarUserSetName = vData - End Property - Public Property Get UserSetName() - UserSetName = mvarUserSetName - End Property - - Public Property Let FileName(ByVal vData ) - mvarFileName = vData - End Property - Public Property Get FileName() - FileName = mvarFileName - End Property - - Public Property Let LocalName(ByVal vData ) - mvarLocalName = vData - End Property - Public Property Get LocalName() - LocalName = mvarLocalName - End Property - - Public Property Let NewName(ByVal vData ) - mvarNewName = vData - End Property - Public Property Get NewName() - NewName = mvarNewName - End Property - - Public Property Let FormName(ByVal vData ) - mvarFormName = vData - End Property - Public Property Get FormName() - FormName = mvarFormName - End Property - - Private Sub Class_Initialize() - mvarSize =0 - mvarWidth = 0 - mvarHeight = 0 - End Sub - - Public Function SaveToFile(ByVal Path , byval tOption, byval OverWrite) - On Error Resume Next - Dim IsP - IsP = (InStr(Path, ":") = 2) - If Not IsP Then Path = Server.MapPath(Path) - Path = Replace(Path, "/", "\") - If Mid(Path, Len(Path) - 1) <> "\" Then Path = Path + "\" - CreateFolder Path - mvarPath = Path - If tOption = 1 Then - Path = Path & mvarLocalName: mvarFileName = mvarLocalName - Else - If tOption = -1 And mvarUserSetName <> "" Then - Path = Path & mvarUserSetName & "." & mvarExtend: mvarFileName = mvarUserSetName & "." & mvarExtend - Else - Path = Path & mvarNewName: mvarFileName = mvarNewName - End If - End If - If Not OverWrite Then - Path = GetFilePath() - End If - Dim tmpStrm - Set tmpStrm =server.CreateObject("ADODB.Stream") - tmpStrm.Mode = 3 - tmpStrm.Type = 1 - tmpStrm.Open - StreamT.Position = mvarPosition - StreamT.copyto tmpStrm,mvarSize - tmpStrm.SaveToFile Path, 2 - tmpStrm.Close - Set tmpStrm = Nothing - If Not Err Then - Set SaveToFile = objFromJson("{error:false}") - Else - Set SaveToFile = objFromJson("{error:true,description:'" & replace(Err.Description,"'","\'") & "'}") - mException=Err.Description - End If - End Function - - Public Function GetBytes() - StreamT.Position = mvarPosition - GetBytes = StreamT.read(mvarSize) - End Function - Private Function CreateFolder(ByVal folderPath ) - Dim oFSO - Set oFSO = server.CreateObject("Scripting.FileSystemObject") - Dim sParent - sParent = oFSO.GetParentFolderName(folderPath) - If sParent = "" Then Exit Function - If Not oFSO.FolderExists(sParent) Then CreateFolder (sParent) - If Not oFSO.FolderExists(folderPath) Then oFSO.CreateFolder (folderPath) - Set oFSO = Nothing - End Function - - Private Function GetFilePath() - Dim oFSO, Fname , FNameL , i - i = 0 - Set oFSO = server.CreateObject("Scripting.FileSystemObject") - Fname = mvarPath & mvarFileName - FNameL = Mid(mvarFileName, 1, InStr(mvarFileName, ".") - 1) - Do While oFSO.FileExists(Fname) - Fname = mvarPath & FNameL & "(" & i & ")." & mvarExtend - mvarFileName = FNameL & "(" & i & ")." & mvarExtend - i = i + 1 - Loop - Set oFSO = Nothing - GetFilePath = Fname - End Function -End Class -%> - \ No newline at end of file diff --git a/asp/demo.asp b/asp/demo.asp deleted file mode 100644 index cfad5a9b4..000000000 --- a/asp/demo.asp +++ /dev/null @@ -1,60 +0,0 @@ -<%@ CODEPAGE=65001 %> -<% -Option Explicit -Response.CodePage=65001 -Response.Charset="UTF-8" - -Dim htmlData - -htmlData = Request.Form("content1") - -Function htmlspecialchars(str) - str = Replace(str, "&", "&") - str = Replace(str, "<", "<") - str = Replace(str, ">", ">") - str = Replace(str, """", """) - htmlspecialchars = str -End Function -%> - - - - - KindEditor ASP - - - - - - - - - <%=htmlData%> -
- -
- (提交快捷键: Ctrl + Enter) -
- - diff --git a/asp/file_manager_json.asp.txt b/asp/file_manager_json.asp.txt deleted file mode 100644 index e249b61f6..000000000 --- a/asp/file_manager_json.asp.txt +++ /dev/null @@ -1,228 +0,0 @@ -<%@ CODEPAGE=65001 %> -<% Option Explicit %> -<% Response.CodePage=65001 %> -<% Response.Charset="UTF-8" %> - -<% - -' KindEditor ASP -' -' 本ASP程序是演示程序,建议不要直接在实际项目中使用。 -' 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。 -' - -Dim aspUrl, rootPath, rootUrl, fileTypes -Dim currentPath, currentUrl, currentDirPath, moveupDirPath -Dim path, order, dirName, fso, folder, dir, file, result -Dim fileExt, dirCount, fileCount, orderIndex, i, j -Dim dirList(), fileList(), isDir, hasFile, filesize, isPhoto, filetype, filename, datetime - -aspUrl = Request.ServerVariables("SCRIPT_NAME") -aspUrl = left(aspUrl, InStrRev(aspUrl, "/")) - -'根目录路径,可以指定绝对路径,比如 /var/www/attached/ -rootPath = "../attached/" -'根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/ -rootUrl = aspUrl & "../attached/" -'图片扩展名 -fileTypes = "gif,jpg,jpeg,png,bmp" - -currentPath = "" -currentUrl = "" -currentDirPath = "" -moveupDirPath = "" - -Set fso = Server.CreateObject("Scripting.FileSystemObject") - -'目录名 -dirName = Request.QueryString("dir") -If Not isEmpty(dirName) Then - If instr(lcase("image,flash,media,file"), dirName) < 1 Then - Response.Write "Invalid Directory name." - Response.End - End If - rootPath = rootPath & dirName & "/" - rootUrl = rootUrl & dirName & "/" - If Not fso.FolderExists(Server.mappath(rootPath)) Then - fso.CreateFolder(Server.mappath(rootPath)) - End If -End If - -'根据path参数,设置各路径和URL -path = Request.QueryString("path") -If path = "" Then - currentPath = Server.MapPath(rootPath) & "\" - currentUrl = rootUrl - currentDirPath = "" - moveupDirPath = "" -Else - currentPath = Server.MapPath(rootPath & path) & "\" - currentUrl = rootUrl + path - currentDirPath = path - moveupDirPath = RegexReplace(currentDirPath, "(.*?)[^\/]+\/$", "$1") -End If - -Set folder = fso.GetFolder(currentPath) - -'排序形式,name or size or type -order = lcase(Request.QueryString("order")) -Select Case order - Case "type" orderIndex = 4 - Case "size" orderIndex = 2 - Case Else orderIndex = 5 -End Select - -'不允许使用..移动到上一级目录 -If RegexIsMatch(path, "\.\.") Then - Response.Write "Access is not allowed." - Response.End -End If -'最后一个字符不是/ -If path <> "" And Not RegexIsMatch(path, "\/$") Then - Response.Write "Parameter is not allowed." - Response.End -End If -'目录不存在或不是目录 -If Not DirectoryExists(currentPath) Then - Response.Write "Directory does not exist." - Response.End -End If - -Set result = jsObject() -'相对于根目录的上一级目录 -result("moveup_dir_path") = moveupDirPath -'相对于根目录的当前目录 -result("current_dir_path") = currentDirPath -'当前目录的URL -result("current_url") = currentUrl - -'文件数 -dirCount = folder.SubFolders.count -fileCount = folder.Files.count -result("total_count") = dirCount + fileCount - -ReDim dirList(dirCount) -i = 0 -For Each dir in folder.SubFolders - isDir = True - hasFile = (dir.Files.count > 0) - filesize = 0 - isPhoto = False - filetype = "" - filename = dir.name - datetime = FormatDate(dir.DateLastModified) - dirList(i) = Array(isDir, hasFile, filesize, isPhoto, filetype, filename, datetime) - i = i + 1 -Next -ReDim fileList(fileCount) -i = 0 -For Each file in folder.Files - fileExt = lcase(mid(file.name, InStrRev(file.name, ".") + 1)) - isDir = False - hasFile = False - filesize = file.size - isPhoto = (instr(lcase(fileTypes), fileExt) > 0) - filetype = fileExt - filename = file.name - datetime = FormatDate(file.DateLastModified) - fileList(i) = Array(isDir, hasFile, filesize, isPhoto, filetype, filename, datetime) - i = i + 1 -Next - -'排序 -Dim minidx, temp -For i = 0 To dirCount - 2 - minidx = i - For j = i + 1 To dirCount - 1 - If (dirList(minidx)(5) > dirList(j)(5)) Then - minidx = j - End If - Next - If minidx <> i Then - temp = dirList(minidx) - dirList(minidx) = dirList(i) - dirList(i) = temp - End If -Next -For i = 0 To fileCount - 2 - minidx = i - For j = i + 1 To fileCount - 1 - If (fileList(minidx)(orderIndex) > fileList(j)(orderIndex)) Then - minidx = j - End If - Next - If minidx <> i Then - temp = fileList(minidx) - fileList(minidx) = fileList(i) - fileList(i) = temp - End If -Next - -Set result("file_list") = jsArray() -For i = 0 To dirCount - 1 - Set result("file_list")(Null) = jsObject() - result("file_list")(Null)("is_dir") = dirList(i)(0) - result("file_list")(Null)("has_file") = dirList(i)(1) - result("file_list")(Null)("filesize") = dirList(i)(2) - result("file_list")(Null)("is_photo") = dirList(i)(3) - result("file_list")(Null)("filetype") = dirList(i)(4) - result("file_list")(Null)("filename") = dirList(i)(5) - result("file_list")(Null)("datetime") = dirList(i)(6) -Next -For i = 0 To fileCount - 1 - Set result("file_list")(Null) = jsObject() - result("file_list")(Null)("is_dir") = fileList(i)(0) - result("file_list")(Null)("has_file") = fileList(i)(1) - result("file_list")(Null)("filesize") = fileList(i)(2) - result("file_list")(Null)("is_photo") = fileList(i)(3) - result("file_list")(Null)("filetype") = fileList(i)(4) - result("file_list")(Null)("filename") = fileList(i)(5) - result("file_list")(Null)("datetime") = fileList(i)(6) -Next - -'输出JSON字符串 -Response.AddHeader "Content-Type", "text/html; charset=UTF-8" -result.Flush -Response.End - -'自定义函数 -Function DirectoryExists(dirPath) - Dim fso - Set fso = Server.CreateObject("Scripting.FileSystemObject") - DirectoryExists = fso.FolderExists(dirPath) -End Function - -Function RegexIsMatch(subject, pattern) - Dim reg - Set reg = New RegExp - reg.Global = True - reg.MultiLine = True - reg.Pattern = pattern - RegexIsMatch = reg.Test(subject) -End Function - -Function RegexReplace(subject, pattern, replacement) - Dim reg - Set reg = New RegExp - reg.Global = True - reg.MultiLine = True - reg.Pattern = pattern - RegexReplace = reg.Replace(subject, replacement) -End Function - -Public Function FormatDate(datetime) - Dim y, m, d, h, i, s - y = CStr(Year(datetime)) - m = CStr(Month(datetime)) - If Len(m) = 1 Then m = "0" & m - d = CStr(Day(datetime)) - If Len(d) = 1 Then d = "0" & d - h = CStr(Hour(datetime)) - If Len(h) = 1 Then h = "0" & h - i = CStr(Minute(datetime)) - If Len(i) = 1 Then i = "0" & i - s = CStr(Second(datetime)) - If Len(s) = 1 Then s = "0" & s - FormatDate = y & "-" & m & "-" & d & " " & h & ":" & i & ":" & s -End Function -%> diff --git a/asp/upload_json.asp.txt b/asp/upload_json.asp.txt deleted file mode 100644 index c26371f6d..000000000 --- a/asp/upload_json.asp.txt +++ /dev/null @@ -1,119 +0,0 @@ -<%@ CODEPAGE=65001 %> -<% Option Explicit %> -<% Response.CodePage=65001 %> -<% Response.Charset="UTF-8" %> - - -<% - -' KindEditor ASP -' -' 本ASP程序是演示程序,建议不要直接在实际项目中使用。 -' 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。 -' - -Dim aspUrl, savePath, saveUrl, maxSize, fileName, fileExt, newFileName, filePath, fileUrl, dirName -Dim extStr, imageExtStr, flashExtStr, mediaExtStr, fileExtStr -Dim upload, file, fso, ranNum, hash, ymd, mm, dd, result - -aspUrl = Request.ServerVariables("SCRIPT_NAME") -aspUrl = left(aspUrl, InStrRev(aspUrl, "/")) - -'文件保存目录路径 -savePath = "../attached/" -'文件保存目录URL -saveUrl = aspUrl & "../attached/" -'定义允许上传的文件扩展名 -imageExtStr = "gif|jpg|jpeg|png|bmp" -flashExtStr = "swf|flv" -mediaExtStr = "swf|flv|mp3|wav|wma|wmv|mid|avi|mpg|asf|rm|rmvb" -fileExtStr = "doc|docx|xls|xlsx|ppt|txt|zip|rar|gz|bz2" -'最大文件大小 -maxSize = 5 * 1024 * 1024 '5M - -Set fso = Server.CreateObject("Scripting.FileSystemObject") -If Not fso.FolderExists(Server.mappath(savePath)) Then - showError("上传目录不存在。") -End If - -dirName = Request.QueryString("dir") -If isEmpty(dirName) Then - dirName = "image" -End If -If instr(lcase("image,flash,media,file"), dirName) < 1 Then - showError("目录名不正确。") -End If - -Select Case dirName - Case "flash" extStr = flashExtStr - Case "media" extStr = mediaExtStr - Case "file" extStr = fileExtStr - Case Else extStr = imageExtStr -End Select - -set upload = new AnUpLoad -upload.Exe = extStr -upload.MaxSize = maxSize -upload.GetData() -if upload.ErrorID>0 then - showError(upload.Description) -end if - -'创建文件夹 -savePath = savePath & dirName & "/" -saveUrl = saveUrl & dirName & "/" -If Not fso.FolderExists(Server.mappath(savePath)) Then - fso.CreateFolder(Server.mappath(savePath)) -End If -mm = month(now) -If mm < 10 Then - mm = "0" & mm -End If -dd = day(now) -If dd < 10 Then - dd = "0" & dd -End If -ymd = year(now) & mm & dd -savePath = savePath & ymd & "/" -saveUrl = saveUrl & ymd & "/" -If Not fso.FolderExists(Server.mappath(savePath)) Then - fso.CreateFolder(Server.mappath(savePath)) -End If - -set file = upload.files("imgFile") -if file is nothing then - showError("请选择文件。") -end if - -set result = file.saveToFile(savePath, 0, true) -if result.error then - showError(file.Exception) -end if - -filePath = Server.mappath(savePath & file.filename) -fileUrl = saveUrl & file.filename - -Set upload = nothing -Set file = nothing - -If Not fso.FileExists(filePath) Then - showError("上传文件失败。") -End If - -Response.AddHeader "Content-Type", "text/html; charset=UTF-8" -Set hash = jsObject() -hash("error") = 0 -hash("url") = fileUrl -hash.Flush -Response.End - -Function showError(message) - Response.AddHeader "Content-Type", "text/html; charset=UTF-8" - Dim hash - Set hash = jsObject() - hash("error") = 1 - hash("message") = message - hash.Flush - Response.End -End Function -%> diff --git a/jsp/README.txt b/jsp/README.txt deleted file mode 100644 index c9fb1c7ed..000000000 --- a/jsp/README.txt +++ /dev/null @@ -1,17 +0,0 @@ -KindEditor JSP - -本JSP程序是演示程序,建议不要直接在实际项目中使用。 -如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。 - -使用方法: - -1. 解压zip文件,将所有文件复制到Tomcat的webapps/kindeditor目录下。 - -2. 将kindeditor/jsp/lib目录下的3个jar文件复制到Tomcat的lib目录下,并重新启动Tomcat。 - * commons-fileupload-1.2.1.jar - * commons-io-1.4.jar - * json_simple-1.1.jar - -3. jsp.txt 扩展名改成 jsp。 - -4. 打开浏览器,输入http://localhost:[P0RT]/kindeditor/jsp/demo.jsp。 diff --git a/jsp/demo.jsp b/jsp/demo.jsp deleted file mode 100644 index 44dc71005..000000000 --- a/jsp/demo.jsp +++ /dev/null @@ -1,56 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<% -request.setCharacterEncoding("UTF-8"); -String htmlData = request.getParameter("content1") != null ? request.getParameter("content1") : ""; -%> - - - - - KindEditor JSP - - - - - - - - - <%=htmlData%> -
- -
- (提交快捷键: Ctrl + Enter) -
- - -<%! -private String htmlspecialchars(String str) { - str = str.replaceAll("&", "&"); - str = str.replaceAll("<", "<"); - str = str.replaceAll(">", ">"); - str = str.replaceAll("\"", """); - return str; -} -%> \ No newline at end of file diff --git a/jsp/file_manager_json.jsp.txt b/jsp/file_manager_json.jsp.txt deleted file mode 100644 index 9629ecbb3..000000000 --- a/jsp/file_manager_json.jsp.txt +++ /dev/null @@ -1,155 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ page import="java.util.*,java.io.*" %> -<%@ page import="java.text.SimpleDateFormat" %> -<%@ page import="org.json.simple.*" %> -<% - -/** - * KindEditor JSP - * - * 本JSP程序是演示程序,建议不要直接在实际项目中使用。 - * 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。 - * - */ - -//根目录路径,可以指定绝对路径,比如 /var/www/attached/ -String rootPath = pageContext.getServletContext().getRealPath("/") + "attached/"; -//根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/ -String rootUrl = request.getContextPath() + "/attached/"; -//图片扩展名 -String[] fileTypes = new String[]{"gif", "jpg", "jpeg", "png", "bmp"}; - -String dirName = request.getParameter("dir"); -if (dirName != null) { - if(!Arrays.asList(new String[]{"image", "flash", "media", "file"}).contains(dirName)){ - out.println("Invalid Directory name."); - return; - } - rootPath += dirName + "/"; - rootUrl += dirName + "/"; - File saveDirFile = new File(rootPath); - if (!saveDirFile.exists()) { - saveDirFile.mkdirs(); - } -} -//根据path参数,设置各路径和URL -String path = request.getParameter("path") != null ? request.getParameter("path") : ""; -String currentPath = rootPath + path; -String currentUrl = rootUrl + path; -String currentDirPath = path; -String moveupDirPath = ""; -if (!"".equals(path)) { - String str = currentDirPath.substring(0, currentDirPath.length() - 1); - moveupDirPath = str.lastIndexOf("/") >= 0 ? str.substring(0, str.lastIndexOf("/") + 1) : ""; -} - -//排序形式,name or size or type -String order = request.getParameter("order") != null ? request.getParameter("order").toLowerCase() : "name"; - -//不允许使用..移动到上一级目录 -if (path.indexOf("..") >= 0) { - out.println("Access is not allowed."); - return; -} -//最后一个字符不是/ -if (!"".equals(path) && !path.endsWith("/")) { - out.println("Parameter is not valid."); - return; -} -//目录不存在或不是目录 -File currentPathFile = new File(currentPath); -if(!currentPathFile.isDirectory()){ - out.println("Directory does not exist."); - return; -} - -//遍历目录取的文件信息 -List fileList = new ArrayList(); -if(currentPathFile.listFiles() != null) { - for (File file : currentPathFile.listFiles()) { - Hashtable hash = new Hashtable(); - String fileName = file.getName(); - if(file.isDirectory()) { - hash.put("is_dir", true); - hash.put("has_file", (file.listFiles() != null)); - hash.put("filesize", 0L); - hash.put("is_photo", false); - hash.put("filetype", ""); - } else if(file.isFile()){ - String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); - hash.put("is_dir", false); - hash.put("has_file", false); - hash.put("filesize", file.length()); - hash.put("is_photo", Arrays.asList(fileTypes).contains(fileExt)); - hash.put("filetype", fileExt); - } - hash.put("filename", fileName); - hash.put("datetime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file.lastModified())); - fileList.add(hash); - } -} - -if ("size".equals(order)) { - Collections.sort(fileList, new SizeComparator()); -} else if ("type".equals(order)) { - Collections.sort(fileList, new TypeComparator()); -} else { - Collections.sort(fileList, new NameComparator()); -} -JSONObject result = new JSONObject(); -result.put("moveup_dir_path", moveupDirPath); -result.put("current_dir_path", currentDirPath); -result.put("current_url", currentUrl); -result.put("total_count", fileList.size()); -result.put("file_list", fileList); - -response.setContentType("application/json; charset=UTF-8"); -out.println(result.toJSONString()); -%> -<%! -public class NameComparator implements Comparator { - public int compare(Object a, Object b) { - Hashtable hashA = (Hashtable)a; - Hashtable hashB = (Hashtable)b; - if (((Boolean)hashA.get("is_dir")) && !((Boolean)hashB.get("is_dir"))) { - return -1; - } else if (!((Boolean)hashA.get("is_dir")) && ((Boolean)hashB.get("is_dir"))) { - return 1; - } else { - return ((String)hashA.get("filename")).compareTo((String)hashB.get("filename")); - } - } -} -public class SizeComparator implements Comparator { - public int compare(Object a, Object b) { - Hashtable hashA = (Hashtable)a; - Hashtable hashB = (Hashtable)b; - if (((Boolean)hashA.get("is_dir")) && !((Boolean)hashB.get("is_dir"))) { - return -1; - } else if (!((Boolean)hashA.get("is_dir")) && ((Boolean)hashB.get("is_dir"))) { - return 1; - } else { - if (((Long)hashA.get("filesize")) > ((Long)hashB.get("filesize"))) { - return 1; - } else if (((Long)hashA.get("filesize")) < ((Long)hashB.get("filesize"))) { - return -1; - } else { - return 0; - } - } - } -} -public class TypeComparator implements Comparator { - public int compare(Object a, Object b) { - Hashtable hashA = (Hashtable)a; - Hashtable hashB = (Hashtable)b; - if (((Boolean)hashA.get("is_dir")) && !((Boolean)hashB.get("is_dir"))) { - return -1; - } else if (!((Boolean)hashA.get("is_dir")) && ((Boolean)hashB.get("is_dir"))) { - return 1; - } else { - return ((String)hashA.get("filetype")).compareTo((String)hashB.get("filetype")); - } - } -} -%> \ No newline at end of file diff --git a/jsp/lib/commons-fileupload-1.2.1.jar b/jsp/lib/commons-fileupload-1.2.1.jar deleted file mode 100644 index aa209b388..000000000 Binary files a/jsp/lib/commons-fileupload-1.2.1.jar and /dev/null differ diff --git a/jsp/lib/commons-io-1.4.jar b/jsp/lib/commons-io-1.4.jar deleted file mode 100644 index 133dc6cb3..000000000 Binary files a/jsp/lib/commons-io-1.4.jar and /dev/null differ diff --git a/jsp/lib/json_simple-1.1.jar b/jsp/lib/json_simple-1.1.jar deleted file mode 100644 index f395f4147..000000000 Binary files a/jsp/lib/json_simple-1.1.jar and /dev/null differ diff --git a/jsp/upload_json.jsp.txt b/jsp/upload_json.jsp.txt deleted file mode 100644 index dc3a40ffe..000000000 --- a/jsp/upload_json.jsp.txt +++ /dev/null @@ -1,122 +0,0 @@ -<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@ page import="java.util.*,java.io.*" %> -<%@ page import="java.text.SimpleDateFormat" %> -<%@ page import="org.apache.commons.fileupload.*" %> -<%@ page import="org.apache.commons.fileupload.disk.*" %> -<%@ page import="org.apache.commons.fileupload.servlet.*" %> -<%@ page import="org.json.simple.*" %> -<% - -/** - * KindEditor JSP - * - * 本JSP程序是演示程序,建议不要直接在实际项目中使用。 - * 如果您确定直接使用本程序,使用之前请仔细确认相关安全设置。 - * - */ - -//文件保存目录路径 -String savePath = pageContext.getServletContext().getRealPath("/") + "attached/"; - -//文件保存目录URL -String saveUrl = request.getContextPath() + "/attached/"; - -//定义允许上传的文件扩展名 -HashMap extMap = new HashMap(); -extMap.put("image", "gif,jpg,jpeg,png,bmp"); -extMap.put("flash", "swf,flv"); -extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb"); -extMap.put("file", "doc,docx,xls,xlsx,ppt,txt,zip,rar,gz,bz2"); - -//最大文件大小 -long maxSize = 1000000; - -response.setContentType("text/html; charset=UTF-8"); - -if(!ServletFileUpload.isMultipartContent(request)){ - out.println(getError("请选择文件。")); - return; -} -//检查目录 -File uploadDir = new File(savePath); -if(!uploadDir.isDirectory()){ - out.println(getError("上传目录不存在。")); - return; -} -//检查目录写权限 -if(!uploadDir.canWrite()){ - out.println(getError("上传目录没有写权限。")); - return; -} - -String dirName = request.getParameter("dir"); -if (dirName == null) { - dirName = "image"; -} -if(!extMap.containsKey(dirName)){ - out.println(getError("目录名不正确。")); - return; -} -//创建文件夹 -savePath += dirName + "/"; -saveUrl += dirName + "/"; -File saveDirFile = new File(savePath); -if (!saveDirFile.exists()) { - saveDirFile.mkdirs(); -} -SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); -String ymd = sdf.format(new Date()); -savePath += ymd + "/"; -saveUrl += ymd + "/"; -File dirFile = new File(savePath); -if (!dirFile.exists()) { - dirFile.mkdirs(); -} - -FileItemFactory factory = new DiskFileItemFactory(); -ServletFileUpload upload = new ServletFileUpload(factory); -upload.setHeaderEncoding("UTF-8"); -List items = upload.parseRequest(request); -Iterator itr = items.iterator(); -while (itr.hasNext()) { - FileItem item = (FileItem) itr.next(); - String fileName = item.getName(); - long fileSize = item.getSize(); - if (!item.isFormField()) { - //检查文件大小 - if(item.getSize() > maxSize){ - out.println(getError("上传文件大小超过限制。")); - return; - } - //检查扩展名 - String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); - if(!Arrays.asList(extMap.get(dirName).split(",")).contains(fileExt)){ - out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。")); - return; - } - - SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); - String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt; - try{ - File uploadedFile = new File(savePath, newFileName); - item.write(uploadedFile); - }catch(Exception e){ - out.println(getError("上传文件失败。")); - return; - } - - JSONObject obj = new JSONObject(); - obj.put("error", 0); - obj.put("url", saveUrl + newFileName); - out.println(obj.toJSONString()); - } -} -%> -<%! -private String getError(String message) { - JSONObject obj = new JSONObject(); - obj.put("error", 1); - obj.put("message", message); - return obj.toJSONString(); -} -%> \ No newline at end of file diff --git a/php/JSON.php b/php/JSON.php deleted file mode 100644 index 0cddbddb4..000000000 --- a/php/JSON.php +++ /dev/null @@ -1,806 +0,0 @@ - - * @author Matt Knapp - * @author Brett Stimmerman - * @copyright 2005 Michal Migurski - * @version CVS: $Id: JSON.php,v 1.31 2006/06/28 05:54:17 migurski Exp $ - * @license http://www.opensource.org/licenses/bsd-license.php - * @link http://pear.php.net/pepr/pepr-proposal-show.php?id=198 - */ - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_SLICE', 1); - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_IN_STR', 2); - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_IN_ARR', 3); - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_IN_OBJ', 4); - -/** - * Marker constant for Services_JSON::decode(), used to flag stack state - */ -define('SERVICES_JSON_IN_CMT', 5); - -/** - * Behavior switch for Services_JSON::decode() - */ -define('SERVICES_JSON_LOOSE_TYPE', 16); - -/** - * Behavior switch for Services_JSON::decode() - */ -define('SERVICES_JSON_SUPPRESS_ERRORS', 32); - -/** - * Converts to and from JSON format. - * - * Brief example of use: - * - * - * // create a new instance of Services_JSON - * $json = new Services_JSON(); - * - * // convert a complexe value to JSON notation, and send it to the browser - * $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4))); - * $output = $json->encode($value); - * - * print($output); - * // prints: ["foo","bar",[1,2,"baz"],[3,[4]]] - * - * // accept incoming POST data, assumed to be in JSON notation - * $input = file_get_contents('php://input', 1000000); - * $value = $json->decode($input); - * - */ -class Services_JSON -{ - /** - * constructs a new JSON instance - * - * @param int $use object behavior flags; combine with boolean-OR - * - * possible values: - * - SERVICES_JSON_LOOSE_TYPE: loose typing. - * "{...}" syntax creates associative arrays - * instead of objects in decode(). - * - SERVICES_JSON_SUPPRESS_ERRORS: error suppression. - * Values which can't be encoded (e.g. resources) - * appear as NULL instead of throwing errors. - * By default, a deeply-nested resource will - * bubble up with an error, so all return values - * from encode() should be checked with isError() - */ - function Services_JSON($use = 0) - { - $this->use = $use; - } - - /** - * convert a string from one UTF-16 char to one UTF-8 char - * - * Normally should be handled by mb_convert_encoding, but - * provides a slower PHP-only method for installations - * that lack the multibye string extension. - * - * @param string $utf16 UTF-16 character - * @return string UTF-8 character - * @access private - */ - function utf162utf8($utf16) - { - // oh please oh please oh please oh please oh please - if(function_exists('mb_convert_encoding')) { - return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16'); - } - - $bytes = (ord($utf16{0}) << 8) | ord($utf16{1}); - - switch(true) { - case ((0x7F & $bytes) == $bytes): - // this case should never be reached, because we are in ASCII range - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0x7F & $bytes); - - case (0x07FF & $bytes) == $bytes: - // return a 2-byte UTF-8 character - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0xC0 | (($bytes >> 6) & 0x1F)) - . chr(0x80 | ($bytes & 0x3F)); - - case (0xFFFF & $bytes) == $bytes: - // return a 3-byte UTF-8 character - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0xE0 | (($bytes >> 12) & 0x0F)) - . chr(0x80 | (($bytes >> 6) & 0x3F)) - . chr(0x80 | ($bytes & 0x3F)); - } - - // ignoring UTF-32 for now, sorry - return ''; - } - - /** - * convert a string from one UTF-8 char to one UTF-16 char - * - * Normally should be handled by mb_convert_encoding, but - * provides a slower PHP-only method for installations - * that lack the multibye string extension. - * - * @param string $utf8 UTF-8 character - * @return string UTF-16 character - * @access private - */ - function utf82utf16($utf8) - { - // oh please oh please oh please oh please oh please - if(function_exists('mb_convert_encoding')) { - return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'); - } - - switch(strlen($utf8)) { - case 1: - // this case should never be reached, because we are in ASCII range - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return $utf8; - - case 2: - // return a UTF-16 character from a 2-byte UTF-8 char - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr(0x07 & (ord($utf8{0}) >> 2)) - . chr((0xC0 & (ord($utf8{0}) << 6)) - | (0x3F & ord($utf8{1}))); - - case 3: - // return a UTF-16 character from a 3-byte UTF-8 char - // see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - return chr((0xF0 & (ord($utf8{0}) << 4)) - | (0x0F & (ord($utf8{1}) >> 2))) - . chr((0xC0 & (ord($utf8{1}) << 6)) - | (0x7F & ord($utf8{2}))); - } - - // ignoring UTF-32 for now, sorry - return ''; - } - - /** - * encodes an arbitrary variable into JSON format - * - * @param mixed $var any number, boolean, string, array, or object to be encoded. - * see argument 1 to Services_JSON() above for array-parsing behavior. - * if var is a strng, note that encode() always expects it - * to be in ASCII or UTF-8 format! - * - * @return mixed JSON string representation of input var or an error if a problem occurs - * @access public - */ - function encode($var) - { - switch (gettype($var)) { - case 'boolean': - return $var ? 'true' : 'false'; - - case 'NULL': - return 'null'; - - case 'integer': - return (int) $var; - - case 'double': - case 'float': - return (float) $var; - - case 'string': - // STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT - $ascii = ''; - $strlen_var = strlen($var); - - /* - * Iterate over every character in the string, - * escaping with a slash or encoding to UTF-8 where necessary - */ - for ($c = 0; $c < $strlen_var; ++$c) { - - $ord_var_c = ord($var{$c}); - - switch (true) { - case $ord_var_c == 0x08: - $ascii .= '\b'; - break; - case $ord_var_c == 0x09: - $ascii .= '\t'; - break; - case $ord_var_c == 0x0A: - $ascii .= '\n'; - break; - case $ord_var_c == 0x0C: - $ascii .= '\f'; - break; - case $ord_var_c == 0x0D: - $ascii .= '\r'; - break; - - case $ord_var_c == 0x22: - case $ord_var_c == 0x2F: - case $ord_var_c == 0x5C: - // double quote, slash, slosh - $ascii .= '\\'.$var{$c}; - break; - - case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): - // characters U-00000000 - U-0000007F (same as ASCII) - $ascii .= $var{$c}; - break; - - case (($ord_var_c & 0xE0) == 0xC0): - // characters U-00000080 - U-000007FF, mask 110XXXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, ord($var{$c + 1})); - $c += 1; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xF0) == 0xE0): - // characters U-00000800 - U-0000FFFF, mask 1110XXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2})); - $c += 2; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xF8) == 0xF0): - // characters U-00010000 - U-001FFFFF, mask 11110XXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3})); - $c += 3; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xFC) == 0xF8): - // characters U-00200000 - U-03FFFFFF, mask 111110XX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3}), - ord($var{$c + 4})); - $c += 4; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - - case (($ord_var_c & 0xFE) == 0xFC): - // characters U-04000000 - U-7FFFFFFF, mask 1111110X - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $char = pack('C*', $ord_var_c, - ord($var{$c + 1}), - ord($var{$c + 2}), - ord($var{$c + 3}), - ord($var{$c + 4}), - ord($var{$c + 5})); - $c += 5; - $utf16 = $this->utf82utf16($char); - $ascii .= sprintf('\u%04s', bin2hex($utf16)); - break; - } - } - - return '"'.$ascii.'"'; - - case 'array': - /* - * As per JSON spec if any array key is not an integer - * we must treat the the whole array as an object. We - * also try to catch a sparsely populated associative - * array with numeric keys here because some JS engines - * will create an array with empty indexes up to - * max_index which can cause memory issues and because - * the keys, which may be relevant, will be remapped - * otherwise. - * - * As per the ECMA and JSON specification an object may - * have any string as a property. Unfortunately due to - * a hole in the ECMA specification if the key is a - * ECMA reserved word or starts with a digit the - * parameter is only accessible using ECMAScript's - * bracket notation. - */ - - // treat as a JSON object - if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { - $properties = array_map(array($this, 'name_value'), - array_keys($var), - array_values($var)); - - foreach($properties as $property) { - if(Services_JSON::isError($property)) { - return $property; - } - } - - return '{' . join(',', $properties) . '}'; - } - - // treat it like a regular array - $elements = array_map(array($this, 'encode'), $var); - - foreach($elements as $element) { - if(Services_JSON::isError($element)) { - return $element; - } - } - - return '[' . join(',', $elements) . ']'; - - case 'object': - $vars = get_object_vars($var); - - $properties = array_map(array($this, 'name_value'), - array_keys($vars), - array_values($vars)); - - foreach($properties as $property) { - if(Services_JSON::isError($property)) { - return $property; - } - } - - return '{' . join(',', $properties) . '}'; - - default: - return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS) - ? 'null' - : new Services_JSON_Error(gettype($var)." can not be encoded as JSON string"); - } - } - - /** - * array-walking function for use in generating JSON-formatted name-value pairs - * - * @param string $name name of key to use - * @param mixed $value reference to an array element to be encoded - * - * @return string JSON-formatted name-value pair, like '"name":value' - * @access private - */ - function name_value($name, $value) - { - $encoded_value = $this->encode($value); - - if(Services_JSON::isError($encoded_value)) { - return $encoded_value; - } - - return $this->encode(strval($name)) . ':' . $encoded_value; - } - - /** - * reduce a string by removing leading and trailing comments and whitespace - * - * @param $str string string value to strip of comments and whitespace - * - * @return string string value stripped of comments and whitespace - * @access private - */ - function reduce_string($str) - { - $str = preg_replace(array( - - // eliminate single line comments in '// ...' form - '#^\s*//(.+)$#m', - - // eliminate multi-line comments in '/* ... */' form, at start of string - '#^\s*/\*(.+)\*/#Us', - - // eliminate multi-line comments in '/* ... */' form, at end of string - '#/\*(.+)\*/\s*$#Us' - - ), '', $str); - - // eliminate extraneous space - return trim($str); - } - - /** - * decodes a JSON string into appropriate variable - * - * @param string $str JSON-formatted string - * - * @return mixed number, boolean, string, array, or object - * corresponding to given JSON input string. - * See argument 1 to Services_JSON() above for object-output behavior. - * Note that decode() always returns strings - * in ASCII or UTF-8 format! - * @access public - */ - function decode($str) - { - $str = $this->reduce_string($str); - - switch (strtolower($str)) { - case 'true': - return true; - - case 'false': - return false; - - case 'null': - return null; - - default: - $m = array(); - - if (is_numeric($str)) { - // Lookie-loo, it's a number - - // This would work on its own, but I'm trying to be - // good about returning integers where appropriate: - // return (float)$str; - - // Return float or int, as appropriate - return ((float)$str == (integer)$str) - ? (integer)$str - : (float)$str; - - } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) { - // STRINGS RETURNED IN UTF-8 FORMAT - $delim = substr($str, 0, 1); - $chrs = substr($str, 1, -1); - $utf8 = ''; - $strlen_chrs = strlen($chrs); - - for ($c = 0; $c < $strlen_chrs; ++$c) { - - $substr_chrs_c_2 = substr($chrs, $c, 2); - $ord_chrs_c = ord($chrs{$c}); - - switch (true) { - case $substr_chrs_c_2 == '\b': - $utf8 .= chr(0x08); - ++$c; - break; - case $substr_chrs_c_2 == '\t': - $utf8 .= chr(0x09); - ++$c; - break; - case $substr_chrs_c_2 == '\n': - $utf8 .= chr(0x0A); - ++$c; - break; - case $substr_chrs_c_2 == '\f': - $utf8 .= chr(0x0C); - ++$c; - break; - case $substr_chrs_c_2 == '\r': - $utf8 .= chr(0x0D); - ++$c; - break; - - case $substr_chrs_c_2 == '\\"': - case $substr_chrs_c_2 == '\\\'': - case $substr_chrs_c_2 == '\\\\': - case $substr_chrs_c_2 == '\\/': - if (($delim == '"' && $substr_chrs_c_2 != '\\\'') || - ($delim == "'" && $substr_chrs_c_2 != '\\"')) { - $utf8 .= $chrs{++$c}; - } - break; - - case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)): - // single, escaped unicode character - $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2))) - . chr(hexdec(substr($chrs, ($c + 4), 2))); - $utf8 .= $this->utf162utf8($utf16); - $c += 5; - break; - - case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F): - $utf8 .= $chrs{$c}; - break; - - case ($ord_chrs_c & 0xE0) == 0xC0: - // characters U-00000080 - U-000007FF, mask 110XXXXX - //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 2); - ++$c; - break; - - case ($ord_chrs_c & 0xF0) == 0xE0: - // characters U-00000800 - U-0000FFFF, mask 1110XXXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 3); - $c += 2; - break; - - case ($ord_chrs_c & 0xF8) == 0xF0: - // characters U-00010000 - U-001FFFFF, mask 11110XXX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 4); - $c += 3; - break; - - case ($ord_chrs_c & 0xFC) == 0xF8: - // characters U-00200000 - U-03FFFFFF, mask 111110XX - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 5); - $c += 4; - break; - - case ($ord_chrs_c & 0xFE) == 0xFC: - // characters U-04000000 - U-7FFFFFFF, mask 1111110X - // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 6); - $c += 5; - break; - - } - - } - - return $utf8; - - } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) { - // array, or object notation - - if ($str{0} == '[') { - $stk = array(SERVICES_JSON_IN_ARR); - $arr = array(); - } else { - if ($this->use & SERVICES_JSON_LOOSE_TYPE) { - $stk = array(SERVICES_JSON_IN_OBJ); - $obj = array(); - } else { - $stk = array(SERVICES_JSON_IN_OBJ); - $obj = new stdClass(); - } - } - - array_push($stk, array('what' => SERVICES_JSON_SLICE, - 'where' => 0, - 'delim' => false)); - - $chrs = substr($str, 1, -1); - $chrs = $this->reduce_string($chrs); - - if ($chrs == '') { - if (reset($stk) == SERVICES_JSON_IN_ARR) { - return $arr; - - } else { - return $obj; - - } - } - - //print("\nparsing {$chrs}\n"); - - $strlen_chrs = strlen($chrs); - - for ($c = 0; $c <= $strlen_chrs; ++$c) { - - $top = end($stk); - $substr_chrs_c_2 = substr($chrs, $c, 2); - - if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) { - // found a comma that is not inside a string, array, etc., - // OR we've reached the end of the character list - $slice = substr($chrs, $top['where'], ($c - $top['where'])); - array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false)); - //print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); - - if (reset($stk) == SERVICES_JSON_IN_ARR) { - // we are in an array, so just push an element onto the stack - array_push($arr, $this->decode($slice)); - - } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { - // we are in an object, so figure - // out the property name and set an - // element in an associative array, - // for now - $parts = array(); - - if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { - // "name":value pair - $key = $this->decode($parts[1]); - $val = $this->decode($parts[2]); - - if ($this->use & SERVICES_JSON_LOOSE_TYPE) { - $obj[$key] = $val; - } else { - $obj->$key = $val; - } - } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { - // name:value pair, where name is unquoted - $key = $parts[1]; - $val = $this->decode($parts[2]); - - if ($this->use & SERVICES_JSON_LOOSE_TYPE) { - $obj[$key] = $val; - } else { - $obj->$key = $val; - } - } - - } - - } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) { - // found a quote, and we are not inside a string - array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c})); - //print("Found start of string at {$c}\n"); - - } elseif (($chrs{$c} == $top['delim']) && - ($top['what'] == SERVICES_JSON_IN_STR) && - ((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) { - // found a quote, we're in a string, and it's not escaped - // we know that it's not escaped becase there is _not_ an - // odd number of backslashes at the end of the string so far - array_pop($stk); - //print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n"); - - } elseif (($chrs{$c} == '[') && - in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { - // found a left-bracket, and we are in an array, object, or slice - array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false)); - //print("Found start of array at {$c}\n"); - - } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) { - // found a right-bracket, and we're in an array - array_pop($stk); - //print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); - - } elseif (($chrs{$c} == '{') && - in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { - // found a left-brace, and we are in an array, object, or slice - array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false)); - //print("Found start of object at {$c}\n"); - - } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) { - // found a right-brace, and we're in an object - array_pop($stk); - //print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); - - } elseif (($substr_chrs_c_2 == '/*') && - in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) { - // found a comment start, and we are in an array, object, or slice - array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false)); - $c++; - //print("Found start of comment at {$c}\n"); - - } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) { - // found a comment end, and we're in one now - array_pop($stk); - $c++; - - for ($i = $top['where']; $i <= $c; ++$i) - $chrs = substr_replace($chrs, ' ', $i, 1); - - //print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n"); - - } - - } - - if (reset($stk) == SERVICES_JSON_IN_ARR) { - return $arr; - - } elseif (reset($stk) == SERVICES_JSON_IN_OBJ) { - return $obj; - - } - - } - } - } - - /** - * @todo Ultimately, this should just call PEAR::isError() - */ - function isError($data, $code = null) - { - if (class_exists('pear')) { - return PEAR::isError($data, $code); - } elseif (is_object($data) && (get_class($data) == 'services_json_error' || - is_subclass_of($data, 'services_json_error'))) { - return true; - } - - return false; - } -} - -if (class_exists('PEAR_Error')) { - - class Services_JSON_Error extends PEAR_Error - { - function Services_JSON_Error($message = 'unknown error', $code = null, - $mode = null, $options = null, $userinfo = null) - { - parent::PEAR_Error($message, $code, $mode, $options, $userinfo); - } - } - -} else { - - /** - * @todo Ultimately, this class shall be descended from PEAR_Error - */ - class Services_JSON_Error - { - function Services_JSON_Error($message = 'unknown error', $code = null, - $mode = null, $options = null, $userinfo = null) - { - - } - } - -} - -?> diff --git a/php/demo.php b/php/demo.php deleted file mode 100644 index c63f07a87..000000000 --- a/php/demo.php +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - KindEditor PHP - - - - - - - - - -
- -
- (提交快捷键: Ctrl + Enter) -
- - - diff --git a/php/file_manager_json.php.txt b/php/file_manager_json.php.txt deleted file mode 100644 index 8ce443f8c..000000000 --- a/php/file_manager_json.php.txt +++ /dev/null @@ -1,137 +0,0 @@ - 2); //文件夹是否包含文件 - $file_list[$i]['filesize'] = 0; //文件大小 - $file_list[$i]['is_photo'] = false; //是否图片 - $file_list[$i]['filetype'] = ''; //文件类别,用扩展名判断 - } else { - $file_list[$i]['is_dir'] = false; - $file_list[$i]['has_file'] = false; - $file_list[$i]['filesize'] = filesize($file); - $file_list[$i]['dir_path'] = ''; - $file_ext = strtolower(pathinfo($file, PATHINFO_EXTENSION)); - $file_list[$i]['is_photo'] = in_array($file_ext, $ext_arr); - $file_list[$i]['filetype'] = $file_ext; - } - $file_list[$i]['filename'] = $filename; //文件名,包含扩展名 - $file_list[$i]['datetime'] = date('Y-m-d H:i:s', filemtime($file)); //文件最后修改时间 - $i++; - } - closedir($handle); -} - -//排序 -function cmp_func($a, $b) { - global $order; - if ($a['is_dir'] && !$b['is_dir']) { - return -1; - } else if (!$a['is_dir'] && $b['is_dir']) { - return 1; - } else { - if ($order == 'size') { - if ($a['filesize'] > $b['filesize']) { - return 1; - } else if ($a['filesize'] < $b['filesize']) { - return -1; - } else { - return 0; - } - } else if ($order == 'type') { - return strcmp($a['filetype'], $b['filetype']); - } else { - return strcmp($a['filename'], $b['filename']); - } - } -} -usort($file_list, 'cmp_func'); - -$result = array(); -//相对于根目录的上一级目录 -$result['moveup_dir_path'] = $moveup_dir_path; -//相对于根目录的当前目录 -$result['current_dir_path'] = $current_dir_path; -//当前目录的URL -$result['current_url'] = $current_url; -//文件数 -$result['total_count'] = count($file_list); -//文件列表数组 -$result['file_list'] = $file_list; - -//输出JSON字符串 -header('Content-type: application/json; charset=UTF-8'); -$json = new Services_JSON(); -echo $json->encode($result); diff --git a/php/upload_json.php.txt b/php/upload_json.php.txt deleted file mode 100644 index cfc084be4..000000000 --- a/php/upload_json.php.txt +++ /dev/null @@ -1,139 +0,0 @@ - array('gif', 'jpg', 'jpeg', 'png', 'bmp'), - 'flash' => array('swf', 'flv'), - 'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'), - 'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'txt', 'zip', 'rar', 'gz', 'bz2'), -); -//最大文件大小 -$max_size = 1000000; - -$save_path = realpath($save_path) . '/'; - -//PHP上传失败 -if (!empty($_FILES['imgFile']['error'])) { - switch($_FILES['imgFile']['error']){ - case '1': - $error = '超过php.ini允许的大小。'; - break; - case '2': - $error = '超过表单允许的大小。'; - break; - case '3': - $error = '图片只有部分被上传。'; - break; - case '4': - $error = '请选择图片。'; - break; - case '6': - $error = '找不到临时目录。'; - break; - case '7': - $error = '写文件到硬盘出错。'; - break; - case '8': - $error = 'File upload stopped by extension。'; - break; - case '999': - default: - $error = '未知错误。'; - } - alert($error); -} - -//有上传文件时 -if (empty($_FILES) === false) { - //原文件名 - $file_name = $_FILES['imgFile']['name']; - //服务器上临时文件名 - $tmp_name = $_FILES['imgFile']['tmp_name']; - //文件大小 - $file_size = $_FILES['imgFile']['size']; - //检查文件名 - if (!$file_name) { - alert("请选择文件。"); - } - //检查目录 - if (@is_dir($save_path) === false) { - alert("上传目录不存在。"); - } - //检查目录写权限 - if (@is_writable($save_path) === false) { - alert("上传目录没有写权限。"); - } - //检查是否已上传 - if (@is_uploaded_file($tmp_name) === false) { - alert("上传失败。"); - } - //检查文件大小 - if ($file_size > $max_size) { - alert("上传文件大小超过限制。"); - } - //检查目录名 - $dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']); - if (empty($ext_arr[$dir_name])) { - alert("目录名不正确。"); - } - //获得文件扩展名 - $temp_arr = explode(".", $file_name); - $file_ext = array_pop($temp_arr); - $file_ext = trim($file_ext); - $file_ext = strtolower($file_ext); - //检查扩展名 - if (in_array($file_ext, $ext_arr[$dir_name]) === false) { - alert("上传文件扩展名是不允许的扩展名。\n只允许" . implode(",", $ext_arr[$dir_name]) . "格式。"); - } - //创建文件夹 - if ($dir_name !== '') { - $save_path .= $dir_name . "/"; - $save_url .= $dir_name . "/"; - if (!file_exists($save_path)) { - mkdir($save_path); - } - } - $ymd = date("Ymd"); - $save_path .= $ymd . "/"; - $save_url .= $ymd . "/"; - if (!file_exists($save_path)) { - mkdir($save_path); - } - //新文件名 - $new_file_name = date("YmdHis") . '_' . rand(10000, 99999) . '.' . $file_ext; - //移动文件 - $file_path = $save_path . $new_file_name; - if (move_uploaded_file($tmp_name, $file_path) === false) { - alert("上传文件失败。"); - } - @chmod($file_path, 0644); - $file_url = $save_url . $new_file_name; - - header('Content-type: text/html; charset=UTF-8'); - $json = new Services_JSON(); - echo $json->encode(array('error' => 0, 'url' => $file_url)); - exit; -} - -function alert($msg) { - header('Content-type: text/html; charset=UTF-8'); - $json = new Services_JSON(); - echo $json->encode(array('error' => 1, 'message' => $msg)); - exit; -} diff --git a/plugins/emoticons/images/0.gif b/plugins/emoticons/images/0.gif deleted file mode 100644 index 5be27cb0e..000000000 Binary files a/plugins/emoticons/images/0.gif and /dev/null differ diff --git a/plugins/emoticons/images/1.gif b/plugins/emoticons/images/1.gif deleted file mode 100644 index a2644a9ee..000000000 Binary files a/plugins/emoticons/images/1.gif and /dev/null differ diff --git a/plugins/emoticons/images/10.gif b/plugins/emoticons/images/10.gif deleted file mode 100644 index 905c15be3..000000000 Binary files a/plugins/emoticons/images/10.gif and /dev/null differ diff --git a/plugins/emoticons/images/100.gif b/plugins/emoticons/images/100.gif deleted file mode 100644 index 92ad35d2b..000000000 Binary files a/plugins/emoticons/images/100.gif and /dev/null differ diff --git a/plugins/emoticons/images/101.gif b/plugins/emoticons/images/101.gif deleted file mode 100644 index 1f27663ae..000000000 Binary files a/plugins/emoticons/images/101.gif and /dev/null differ diff --git a/plugins/emoticons/images/102.gif b/plugins/emoticons/images/102.gif deleted file mode 100644 index 748ded1ac..000000000 Binary files a/plugins/emoticons/images/102.gif and /dev/null differ diff --git a/plugins/emoticons/images/103.gif b/plugins/emoticons/images/103.gif deleted file mode 100644 index be9eaa054..000000000 Binary files a/plugins/emoticons/images/103.gif and /dev/null differ diff --git a/plugins/emoticons/images/104.gif b/plugins/emoticons/images/104.gif deleted file mode 100644 index d7c206631..000000000 Binary files a/plugins/emoticons/images/104.gif and /dev/null differ diff --git a/plugins/emoticons/images/105.gif b/plugins/emoticons/images/105.gif deleted file mode 100644 index 2f353cadc..000000000 Binary files a/plugins/emoticons/images/105.gif and /dev/null differ diff --git a/plugins/emoticons/images/106.gif b/plugins/emoticons/images/106.gif deleted file mode 100644 index 51935349b..000000000 Binary files a/plugins/emoticons/images/106.gif and /dev/null differ diff --git a/plugins/emoticons/images/107.gif b/plugins/emoticons/images/107.gif deleted file mode 100644 index 70d38d3bb..000000000 Binary files a/plugins/emoticons/images/107.gif and /dev/null differ diff --git a/plugins/emoticons/images/108.gif b/plugins/emoticons/images/108.gif deleted file mode 100644 index 749d50083..000000000 Binary files a/plugins/emoticons/images/108.gif and /dev/null differ diff --git a/plugins/emoticons/images/109.gif b/plugins/emoticons/images/109.gif deleted file mode 100644 index 6f57d5642..000000000 Binary files a/plugins/emoticons/images/109.gif and /dev/null differ diff --git a/plugins/emoticons/images/11.gif b/plugins/emoticons/images/11.gif deleted file mode 100644 index b512dd5da..000000000 Binary files a/plugins/emoticons/images/11.gif and /dev/null differ diff --git a/plugins/emoticons/images/110.gif b/plugins/emoticons/images/110.gif deleted file mode 100644 index e253abcff..000000000 Binary files a/plugins/emoticons/images/110.gif and /dev/null differ diff --git a/plugins/emoticons/images/111.gif b/plugins/emoticons/images/111.gif deleted file mode 100644 index 0c567233d..000000000 Binary files a/plugins/emoticons/images/111.gif and /dev/null differ diff --git a/plugins/emoticons/images/112.gif b/plugins/emoticons/images/112.gif deleted file mode 100644 index c8ddce88a..000000000 Binary files a/plugins/emoticons/images/112.gif and /dev/null differ diff --git a/plugins/emoticons/images/113.gif b/plugins/emoticons/images/113.gif deleted file mode 100644 index 272710453..000000000 Binary files a/plugins/emoticons/images/113.gif and /dev/null differ diff --git a/plugins/emoticons/images/114.gif b/plugins/emoticons/images/114.gif deleted file mode 100644 index 53918e2ae..000000000 Binary files a/plugins/emoticons/images/114.gif and /dev/null differ diff --git a/plugins/emoticons/images/115.gif b/plugins/emoticons/images/115.gif deleted file mode 100644 index 4db336973..000000000 Binary files a/plugins/emoticons/images/115.gif and /dev/null differ diff --git a/plugins/emoticons/images/116.gif b/plugins/emoticons/images/116.gif deleted file mode 100644 index 57326bd2f..000000000 Binary files a/plugins/emoticons/images/116.gif and /dev/null differ diff --git a/plugins/emoticons/images/117.gif b/plugins/emoticons/images/117.gif deleted file mode 100644 index 14611b6ef..000000000 Binary files a/plugins/emoticons/images/117.gif and /dev/null differ diff --git a/plugins/emoticons/images/118.gif b/plugins/emoticons/images/118.gif deleted file mode 100644 index 8c255004c..000000000 Binary files a/plugins/emoticons/images/118.gif and /dev/null differ diff --git a/plugins/emoticons/images/119.gif b/plugins/emoticons/images/119.gif deleted file mode 100644 index 65bb468b9..000000000 Binary files a/plugins/emoticons/images/119.gif and /dev/null differ diff --git a/plugins/emoticons/images/12.gif b/plugins/emoticons/images/12.gif deleted file mode 100644 index 547529cab..000000000 Binary files a/plugins/emoticons/images/12.gif and /dev/null differ diff --git a/plugins/emoticons/images/120.gif b/plugins/emoticons/images/120.gif deleted file mode 100644 index 5ce77c05f..000000000 Binary files a/plugins/emoticons/images/120.gif and /dev/null differ diff --git a/plugins/emoticons/images/121.gif b/plugins/emoticons/images/121.gif deleted file mode 100644 index a021abaa6..000000000 Binary files a/plugins/emoticons/images/121.gif and /dev/null differ diff --git a/plugins/emoticons/images/122.gif b/plugins/emoticons/images/122.gif deleted file mode 100644 index 9a79e111c..000000000 Binary files a/plugins/emoticons/images/122.gif and /dev/null differ diff --git a/plugins/emoticons/images/123.gif b/plugins/emoticons/images/123.gif deleted file mode 100644 index b9480be25..000000000 Binary files a/plugins/emoticons/images/123.gif and /dev/null differ diff --git a/plugins/emoticons/images/124.gif b/plugins/emoticons/images/124.gif deleted file mode 100644 index 7fed47728..000000000 Binary files a/plugins/emoticons/images/124.gif and /dev/null differ diff --git a/plugins/emoticons/images/125.gif b/plugins/emoticons/images/125.gif deleted file mode 100644 index e2c3c11c9..000000000 Binary files a/plugins/emoticons/images/125.gif and /dev/null differ diff --git a/plugins/emoticons/images/126.gif b/plugins/emoticons/images/126.gif deleted file mode 100644 index 24105c988..000000000 Binary files a/plugins/emoticons/images/126.gif and /dev/null differ diff --git a/plugins/emoticons/images/127.gif b/plugins/emoticons/images/127.gif deleted file mode 100644 index 0cead364a..000000000 Binary files a/plugins/emoticons/images/127.gif and /dev/null differ diff --git a/plugins/emoticons/images/128.gif b/plugins/emoticons/images/128.gif deleted file mode 100644 index 318586181..000000000 Binary files a/plugins/emoticons/images/128.gif and /dev/null differ diff --git a/plugins/emoticons/images/129.gif b/plugins/emoticons/images/129.gif deleted file mode 100644 index ffd7c6ba3..000000000 Binary files a/plugins/emoticons/images/129.gif and /dev/null differ diff --git a/plugins/emoticons/images/13.gif b/plugins/emoticons/images/13.gif deleted file mode 100644 index 34753001e..000000000 Binary files a/plugins/emoticons/images/13.gif and /dev/null differ diff --git a/plugins/emoticons/images/130.gif b/plugins/emoticons/images/130.gif deleted file mode 100644 index d828e3da1..000000000 Binary files a/plugins/emoticons/images/130.gif and /dev/null differ diff --git a/plugins/emoticons/images/131.gif b/plugins/emoticons/images/131.gif deleted file mode 100644 index dcb096f0d..000000000 Binary files a/plugins/emoticons/images/131.gif and /dev/null differ diff --git a/plugins/emoticons/images/132.gif b/plugins/emoticons/images/132.gif deleted file mode 100644 index 1b272a690..000000000 Binary files a/plugins/emoticons/images/132.gif and /dev/null differ diff --git a/plugins/emoticons/images/133.gif b/plugins/emoticons/images/133.gif deleted file mode 100644 index 0d0e86426..000000000 Binary files a/plugins/emoticons/images/133.gif and /dev/null differ diff --git a/plugins/emoticons/images/134.gif b/plugins/emoticons/images/134.gif deleted file mode 100644 index cf48356e3..000000000 Binary files a/plugins/emoticons/images/134.gif and /dev/null differ diff --git a/plugins/emoticons/images/14.gif b/plugins/emoticons/images/14.gif deleted file mode 100644 index 6a788f8be..000000000 Binary files a/plugins/emoticons/images/14.gif and /dev/null differ diff --git a/plugins/emoticons/images/15.gif b/plugins/emoticons/images/15.gif deleted file mode 100644 index debab8ed0..000000000 Binary files a/plugins/emoticons/images/15.gif and /dev/null differ diff --git a/plugins/emoticons/images/16.gif b/plugins/emoticons/images/16.gif deleted file mode 100644 index ed5d29f42..000000000 Binary files a/plugins/emoticons/images/16.gif and /dev/null differ diff --git a/plugins/emoticons/images/17.gif b/plugins/emoticons/images/17.gif deleted file mode 100644 index 85886fef9..000000000 Binary files a/plugins/emoticons/images/17.gif and /dev/null differ diff --git a/plugins/emoticons/images/18.gif b/plugins/emoticons/images/18.gif deleted file mode 100644 index b6af2189c..000000000 Binary files a/plugins/emoticons/images/18.gif and /dev/null differ diff --git a/plugins/emoticons/images/19.gif b/plugins/emoticons/images/19.gif deleted file mode 100644 index e045ff2af..000000000 Binary files a/plugins/emoticons/images/19.gif and /dev/null differ diff --git a/plugins/emoticons/images/2.gif b/plugins/emoticons/images/2.gif deleted file mode 100644 index 40cfda436..000000000 Binary files a/plugins/emoticons/images/2.gif and /dev/null differ diff --git a/plugins/emoticons/images/20.gif b/plugins/emoticons/images/20.gif deleted file mode 100644 index efd650f55..000000000 Binary files a/plugins/emoticons/images/20.gif and /dev/null differ diff --git a/plugins/emoticons/images/21.gif b/plugins/emoticons/images/21.gif deleted file mode 100644 index cb8cf6d2a..000000000 Binary files a/plugins/emoticons/images/21.gif and /dev/null differ diff --git a/plugins/emoticons/images/22.gif b/plugins/emoticons/images/22.gif deleted file mode 100644 index 96b04df86..000000000 Binary files a/plugins/emoticons/images/22.gif and /dev/null differ diff --git a/plugins/emoticons/images/23.gif b/plugins/emoticons/images/23.gif deleted file mode 100644 index 96516b8d9..000000000 Binary files a/plugins/emoticons/images/23.gif and /dev/null differ diff --git a/plugins/emoticons/images/24.gif b/plugins/emoticons/images/24.gif deleted file mode 100644 index 5f925c7bc..000000000 Binary files a/plugins/emoticons/images/24.gif and /dev/null differ diff --git a/plugins/emoticons/images/25.gif b/plugins/emoticons/images/25.gif deleted file mode 100644 index 97f8b1afa..000000000 Binary files a/plugins/emoticons/images/25.gif and /dev/null differ diff --git a/plugins/emoticons/images/26.gif b/plugins/emoticons/images/26.gif deleted file mode 100644 index a7cded731..000000000 Binary files a/plugins/emoticons/images/26.gif and /dev/null differ diff --git a/plugins/emoticons/images/27.gif b/plugins/emoticons/images/27.gif deleted file mode 100644 index bb468901e..000000000 Binary files a/plugins/emoticons/images/27.gif and /dev/null differ diff --git a/plugins/emoticons/images/28.gif b/plugins/emoticons/images/28.gif deleted file mode 100644 index f59dd5825..000000000 Binary files a/plugins/emoticons/images/28.gif and /dev/null differ diff --git a/plugins/emoticons/images/29.gif b/plugins/emoticons/images/29.gif deleted file mode 100644 index 3c5227e8e..000000000 Binary files a/plugins/emoticons/images/29.gif and /dev/null differ diff --git a/plugins/emoticons/images/3.gif b/plugins/emoticons/images/3.gif deleted file mode 100644 index 6d6f76299..000000000 Binary files a/plugins/emoticons/images/3.gif and /dev/null differ diff --git a/plugins/emoticons/images/30.gif b/plugins/emoticons/images/30.gif deleted file mode 100644 index e24a1801c..000000000 Binary files a/plugins/emoticons/images/30.gif and /dev/null differ diff --git a/plugins/emoticons/images/31.gif b/plugins/emoticons/images/31.gif deleted file mode 100644 index 073e743ce..000000000 Binary files a/plugins/emoticons/images/31.gif and /dev/null differ diff --git a/plugins/emoticons/images/32.gif b/plugins/emoticons/images/32.gif deleted file mode 100644 index 772eff23e..000000000 Binary files a/plugins/emoticons/images/32.gif and /dev/null differ diff --git a/plugins/emoticons/images/33.gif b/plugins/emoticons/images/33.gif deleted file mode 100644 index 217c1c581..000000000 Binary files a/plugins/emoticons/images/33.gif and /dev/null differ diff --git a/plugins/emoticons/images/34.gif b/plugins/emoticons/images/34.gif deleted file mode 100644 index e9d42131a..000000000 Binary files a/plugins/emoticons/images/34.gif and /dev/null differ diff --git a/plugins/emoticons/images/35.gif b/plugins/emoticons/images/35.gif deleted file mode 100644 index d6da2c33a..000000000 Binary files a/plugins/emoticons/images/35.gif and /dev/null differ diff --git a/plugins/emoticons/images/36.gif b/plugins/emoticons/images/36.gif deleted file mode 100644 index c1e6ac913..000000000 Binary files a/plugins/emoticons/images/36.gif and /dev/null differ diff --git a/plugins/emoticons/images/37.gif b/plugins/emoticons/images/37.gif deleted file mode 100644 index 92efec6ae..000000000 Binary files a/plugins/emoticons/images/37.gif and /dev/null differ diff --git a/plugins/emoticons/images/38.gif b/plugins/emoticons/images/38.gif deleted file mode 100644 index 489f0f948..000000000 Binary files a/plugins/emoticons/images/38.gif and /dev/null differ diff --git a/plugins/emoticons/images/39.gif b/plugins/emoticons/images/39.gif deleted file mode 100644 index 734f6d82e..000000000 Binary files a/plugins/emoticons/images/39.gif and /dev/null differ diff --git a/plugins/emoticons/images/4.gif b/plugins/emoticons/images/4.gif deleted file mode 100644 index 6ccdaa2c9..000000000 Binary files a/plugins/emoticons/images/4.gif and /dev/null differ diff --git a/plugins/emoticons/images/40.gif b/plugins/emoticons/images/40.gif deleted file mode 100644 index 24a8eb691..000000000 Binary files a/plugins/emoticons/images/40.gif and /dev/null differ diff --git a/plugins/emoticons/images/41.gif b/plugins/emoticons/images/41.gif deleted file mode 100644 index 99139e1d1..000000000 Binary files a/plugins/emoticons/images/41.gif and /dev/null differ diff --git a/plugins/emoticons/images/42.gif b/plugins/emoticons/images/42.gif deleted file mode 100644 index f60897e40..000000000 Binary files a/plugins/emoticons/images/42.gif and /dev/null differ diff --git a/plugins/emoticons/images/43.gif b/plugins/emoticons/images/43.gif deleted file mode 100644 index 435049100..000000000 Binary files a/plugins/emoticons/images/43.gif and /dev/null differ diff --git a/plugins/emoticons/images/44.gif b/plugins/emoticons/images/44.gif deleted file mode 100644 index 650d3dd84..000000000 Binary files a/plugins/emoticons/images/44.gif and /dev/null differ diff --git a/plugins/emoticons/images/45.gif b/plugins/emoticons/images/45.gif deleted file mode 100644 index 5c8e07181..000000000 Binary files a/plugins/emoticons/images/45.gif and /dev/null differ diff --git a/plugins/emoticons/images/46.gif b/plugins/emoticons/images/46.gif deleted file mode 100644 index f3cb0742d..000000000 Binary files a/plugins/emoticons/images/46.gif and /dev/null differ diff --git a/plugins/emoticons/images/47.gif b/plugins/emoticons/images/47.gif deleted file mode 100644 index 5b3057ab7..000000000 Binary files a/plugins/emoticons/images/47.gif and /dev/null differ diff --git a/plugins/emoticons/images/48.gif b/plugins/emoticons/images/48.gif deleted file mode 100644 index 27a30c15c..000000000 Binary files a/plugins/emoticons/images/48.gif and /dev/null differ diff --git a/plugins/emoticons/images/49.gif b/plugins/emoticons/images/49.gif deleted file mode 100644 index dcfa48af0..000000000 Binary files a/plugins/emoticons/images/49.gif and /dev/null differ diff --git a/plugins/emoticons/images/5.gif b/plugins/emoticons/images/5.gif deleted file mode 100644 index ab0b81ba4..000000000 Binary files a/plugins/emoticons/images/5.gif and /dev/null differ diff --git a/plugins/emoticons/images/50.gif b/plugins/emoticons/images/50.gif deleted file mode 100644 index 029cf0fea..000000000 Binary files a/plugins/emoticons/images/50.gif and /dev/null differ diff --git a/plugins/emoticons/images/51.gif b/plugins/emoticons/images/51.gif deleted file mode 100644 index 69f183f04..000000000 Binary files a/plugins/emoticons/images/51.gif and /dev/null differ diff --git a/plugins/emoticons/images/52.gif b/plugins/emoticons/images/52.gif deleted file mode 100644 index d41e8aab1..000000000 Binary files a/plugins/emoticons/images/52.gif and /dev/null differ diff --git a/plugins/emoticons/images/53.gif b/plugins/emoticons/images/53.gif deleted file mode 100644 index 56352dde4..000000000 Binary files a/plugins/emoticons/images/53.gif and /dev/null differ diff --git a/plugins/emoticons/images/54.gif b/plugins/emoticons/images/54.gif deleted file mode 100644 index b28d8481e..000000000 Binary files a/plugins/emoticons/images/54.gif and /dev/null differ diff --git a/plugins/emoticons/images/55.gif b/plugins/emoticons/images/55.gif deleted file mode 100644 index e18da84c6..000000000 Binary files a/plugins/emoticons/images/55.gif and /dev/null differ diff --git a/plugins/emoticons/images/56.gif b/plugins/emoticons/images/56.gif deleted file mode 100644 index edf96f0a6..000000000 Binary files a/plugins/emoticons/images/56.gif and /dev/null differ diff --git a/plugins/emoticons/images/57.gif b/plugins/emoticons/images/57.gif deleted file mode 100644 index 3f0e2b9af..000000000 Binary files a/plugins/emoticons/images/57.gif and /dev/null differ diff --git a/plugins/emoticons/images/58.gif b/plugins/emoticons/images/58.gif deleted file mode 100644 index 47b1aaa34..000000000 Binary files a/plugins/emoticons/images/58.gif and /dev/null differ diff --git a/plugins/emoticons/images/59.gif b/plugins/emoticons/images/59.gif deleted file mode 100644 index 918288b00..000000000 Binary files a/plugins/emoticons/images/59.gif and /dev/null differ diff --git a/plugins/emoticons/images/6.gif b/plugins/emoticons/images/6.gif deleted file mode 100644 index ceab12242..000000000 Binary files a/plugins/emoticons/images/6.gif and /dev/null differ diff --git a/plugins/emoticons/images/60.gif b/plugins/emoticons/images/60.gif deleted file mode 100644 index 66d21136d..000000000 Binary files a/plugins/emoticons/images/60.gif and /dev/null differ diff --git a/plugins/emoticons/images/61.gif b/plugins/emoticons/images/61.gif deleted file mode 100644 index 034933ec3..000000000 Binary files a/plugins/emoticons/images/61.gif and /dev/null differ diff --git a/plugins/emoticons/images/62.gif b/plugins/emoticons/images/62.gif deleted file mode 100644 index 8d5c4fd39..000000000 Binary files a/plugins/emoticons/images/62.gif and /dev/null differ diff --git a/plugins/emoticons/images/63.gif b/plugins/emoticons/images/63.gif deleted file mode 100644 index d58fcf671..000000000 Binary files a/plugins/emoticons/images/63.gif and /dev/null differ diff --git a/plugins/emoticons/images/64.gif b/plugins/emoticons/images/64.gif deleted file mode 100644 index c4e00bdfd..000000000 Binary files a/plugins/emoticons/images/64.gif and /dev/null differ diff --git a/plugins/emoticons/images/65.gif b/plugins/emoticons/images/65.gif deleted file mode 100644 index da23bfaac..000000000 Binary files a/plugins/emoticons/images/65.gif and /dev/null differ diff --git a/plugins/emoticons/images/66.gif b/plugins/emoticons/images/66.gif deleted file mode 100644 index 310ec65f1..000000000 Binary files a/plugins/emoticons/images/66.gif and /dev/null differ diff --git a/plugins/emoticons/images/67.gif b/plugins/emoticons/images/67.gif deleted file mode 100644 index 51761ba45..000000000 Binary files a/plugins/emoticons/images/67.gif and /dev/null differ diff --git a/plugins/emoticons/images/68.gif b/plugins/emoticons/images/68.gif deleted file mode 100644 index 345cb4391..000000000 Binary files a/plugins/emoticons/images/68.gif and /dev/null differ diff --git a/plugins/emoticons/images/69.gif b/plugins/emoticons/images/69.gif deleted file mode 100644 index e0f28a073..000000000 Binary files a/plugins/emoticons/images/69.gif and /dev/null differ diff --git a/plugins/emoticons/images/7.gif b/plugins/emoticons/images/7.gif deleted file mode 100644 index 2f4539998..000000000 Binary files a/plugins/emoticons/images/7.gif and /dev/null differ diff --git a/plugins/emoticons/images/70.gif b/plugins/emoticons/images/70.gif deleted file mode 100644 index 24284cf39..000000000 Binary files a/plugins/emoticons/images/70.gif and /dev/null differ diff --git a/plugins/emoticons/images/71.gif b/plugins/emoticons/images/71.gif deleted file mode 100644 index a0ccf2edf..000000000 Binary files a/plugins/emoticons/images/71.gif and /dev/null differ diff --git a/plugins/emoticons/images/72.gif b/plugins/emoticons/images/72.gif deleted file mode 100644 index 7e113eead..000000000 Binary files a/plugins/emoticons/images/72.gif and /dev/null differ diff --git a/plugins/emoticons/images/73.gif b/plugins/emoticons/images/73.gif deleted file mode 100644 index c0293c3ab..000000000 Binary files a/plugins/emoticons/images/73.gif and /dev/null differ diff --git a/plugins/emoticons/images/74.gif b/plugins/emoticons/images/74.gif deleted file mode 100644 index 1c52bde9c..000000000 Binary files a/plugins/emoticons/images/74.gif and /dev/null differ diff --git a/plugins/emoticons/images/75.gif b/plugins/emoticons/images/75.gif deleted file mode 100644 index 9cb9aa796..000000000 Binary files a/plugins/emoticons/images/75.gif and /dev/null differ diff --git a/plugins/emoticons/images/76.gif b/plugins/emoticons/images/76.gif deleted file mode 100644 index 27019f8ff..000000000 Binary files a/plugins/emoticons/images/76.gif and /dev/null differ diff --git a/plugins/emoticons/images/77.gif b/plugins/emoticons/images/77.gif deleted file mode 100644 index 8f882f531..000000000 Binary files a/plugins/emoticons/images/77.gif and /dev/null differ diff --git a/plugins/emoticons/images/78.gif b/plugins/emoticons/images/78.gif deleted file mode 100644 index d0d085604..000000000 Binary files a/plugins/emoticons/images/78.gif and /dev/null differ diff --git a/plugins/emoticons/images/79.gif b/plugins/emoticons/images/79.gif deleted file mode 100644 index 61652a716..000000000 Binary files a/plugins/emoticons/images/79.gif and /dev/null differ diff --git a/plugins/emoticons/images/8.gif b/plugins/emoticons/images/8.gif deleted file mode 100644 index f6c883447..000000000 Binary files a/plugins/emoticons/images/8.gif and /dev/null differ diff --git a/plugins/emoticons/images/80.gif b/plugins/emoticons/images/80.gif deleted file mode 100644 index 9a779364b..000000000 Binary files a/plugins/emoticons/images/80.gif and /dev/null differ diff --git a/plugins/emoticons/images/81.gif b/plugins/emoticons/images/81.gif deleted file mode 100644 index 2329101a7..000000000 Binary files a/plugins/emoticons/images/81.gif and /dev/null differ diff --git a/plugins/emoticons/images/82.gif b/plugins/emoticons/images/82.gif deleted file mode 100644 index 644748a96..000000000 Binary files a/plugins/emoticons/images/82.gif and /dev/null differ diff --git a/plugins/emoticons/images/83.gif b/plugins/emoticons/images/83.gif deleted file mode 100644 index fbf275ba5..000000000 Binary files a/plugins/emoticons/images/83.gif and /dev/null differ diff --git a/plugins/emoticons/images/84.gif b/plugins/emoticons/images/84.gif deleted file mode 100644 index 076f0c65c..000000000 Binary files a/plugins/emoticons/images/84.gif and /dev/null differ diff --git a/plugins/emoticons/images/85.gif b/plugins/emoticons/images/85.gif deleted file mode 100644 index d254af442..000000000 Binary files a/plugins/emoticons/images/85.gif and /dev/null differ diff --git a/plugins/emoticons/images/86.gif b/plugins/emoticons/images/86.gif deleted file mode 100644 index 8f09d336a..000000000 Binary files a/plugins/emoticons/images/86.gif and /dev/null differ diff --git a/plugins/emoticons/images/87.gif b/plugins/emoticons/images/87.gif deleted file mode 100644 index df70756f0..000000000 Binary files a/plugins/emoticons/images/87.gif and /dev/null differ diff --git a/plugins/emoticons/images/88.gif b/plugins/emoticons/images/88.gif deleted file mode 100644 index 4d8b15e7e..000000000 Binary files a/plugins/emoticons/images/88.gif and /dev/null differ diff --git a/plugins/emoticons/images/89.gif b/plugins/emoticons/images/89.gif deleted file mode 100644 index 05726dc4a..000000000 Binary files a/plugins/emoticons/images/89.gif and /dev/null differ diff --git a/plugins/emoticons/images/9.gif b/plugins/emoticons/images/9.gif deleted file mode 100644 index c2d845075..000000000 Binary files a/plugins/emoticons/images/9.gif and /dev/null differ diff --git a/plugins/emoticons/images/90.gif b/plugins/emoticons/images/90.gif deleted file mode 100644 index adaf20e8b..000000000 Binary files a/plugins/emoticons/images/90.gif and /dev/null differ diff --git a/plugins/emoticons/images/91.gif b/plugins/emoticons/images/91.gif deleted file mode 100644 index 608d0ad87..000000000 Binary files a/plugins/emoticons/images/91.gif and /dev/null differ diff --git a/plugins/emoticons/images/92.gif b/plugins/emoticons/images/92.gif deleted file mode 100644 index b909e16a8..000000000 Binary files a/plugins/emoticons/images/92.gif and /dev/null differ diff --git a/plugins/emoticons/images/93.gif b/plugins/emoticons/images/93.gif deleted file mode 100644 index 7f71a8c94..000000000 Binary files a/plugins/emoticons/images/93.gif and /dev/null differ diff --git a/plugins/emoticons/images/94.gif b/plugins/emoticons/images/94.gif deleted file mode 100644 index 4f26d7d73..000000000 Binary files a/plugins/emoticons/images/94.gif and /dev/null differ diff --git a/plugins/emoticons/images/95.gif b/plugins/emoticons/images/95.gif deleted file mode 100644 index 5ef6d3823..000000000 Binary files a/plugins/emoticons/images/95.gif and /dev/null differ diff --git a/plugins/emoticons/images/96.gif b/plugins/emoticons/images/96.gif deleted file mode 100644 index 2b709e15b..000000000 Binary files a/plugins/emoticons/images/96.gif and /dev/null differ diff --git a/plugins/emoticons/images/97.gif b/plugins/emoticons/images/97.gif deleted file mode 100644 index cf29be87c..000000000 Binary files a/plugins/emoticons/images/97.gif and /dev/null differ diff --git a/plugins/emoticons/images/98.gif b/plugins/emoticons/images/98.gif deleted file mode 100644 index c70e7d339..000000000 Binary files a/plugins/emoticons/images/98.gif and /dev/null differ diff --git a/plugins/emoticons/images/99.gif b/plugins/emoticons/images/99.gif deleted file mode 100644 index 05c18635d..000000000 Binary files a/plugins/emoticons/images/99.gif and /dev/null differ diff --git a/plugins/emoticons/images/static.gif b/plugins/emoticons/images/static.gif deleted file mode 100644 index b8c444b5a..000000000 Binary files a/plugins/emoticons/images/static.gif and /dev/null differ