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
-
-
-
-
-
-
-
-
-
-
-
-
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%>
-
-
-
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%>
-
-
-
-<%!
-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
-
-
-
-
-
-
-
-
-
-
-
-
-
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